from conftest import login_static def test_default_when_no_override(app_client): login_static(app_client) data = app_client.get("/api/config").get_json() # example default_limit is 200 assert data["prefs"]["default_limit"] == 200 def test_override_persists(app_client): csrf = login_static(app_client) app_client.put("/api/prefs", json={"default_limit": 42}, headers={"X-CSRF-Token": csrf}) data = app_client.get("/api/config").get_json() assert data["prefs"]["default_limit"] == 42 def test_invalid_override_rejected(app_client): csrf = login_static(app_client) r = app_client.put("/api/prefs", json={"default_limit": 99999}, headers={"X-CSRF-Token": csrf}) assert r.status_code == 400 def test_deleted_pinned_folder_falls_back(app_client): csrf = login_static(app_client) # Pin a folder that exists, then remove it from config; effective value must fall back. app_client.put("/api/prefs", json={"default_folder": "Deleted"}, headers={"X-CSRF-Token": csrf}) store = app_client._store store.apply({"quarantine": {"folders": ["Quarantine", "Attachment Defense", "Debugging - Josef"], "deleted_folder": "Quarantine"}}, actor="t") data = app_client.get("/api/config").get_json() # "Deleted" no longer in folders -> falls back to admin default, not an error assert data["prefs"]["default_folder"] != "Deleted" def test_per_user_isolation(app_client): from prefs import PrefStore prefs: PrefStore = app_client.application.config["PREFS"] snap = app_client._store.snapshot() prefs.set_many("alice@x.com", {"default_limit": 10}, snap) prefs.set_many("bob@x.com", {"default_limit": 20}, snap) assert prefs.effective("alice@x.com", snap)["default_limit"] == 10 assert prefs.effective("bob@x.com", snap)["default_limit"] == 20 def test_clear_resets_to_default(app_client): csrf = login_static(app_client) app_client.put("/api/prefs", json={"default_limit": 15}, headers={"X-CSRF-Token": csrf}) app_client.delete("/api/prefs", json={}, headers={"X-CSRF-Token": csrf}) data = app_client.get("/api/config").get_json() assert data["prefs"]["default_limit"] == 200