# retoor from devplacepy.database.nodes import list_flags, raise_flag from tests.api.admin.nodes.conftest import admin_headers, make_admin, make_device from tests.api.nodes.conftest import make_member def test_member_cannot_resolve(client): member = make_member() assert client.post("/admin/nodes/flags/x/resolve", headers=admin_headers(member)).status_code == 403 def test_resolve_closes_the_flag_once(client, admin): owner = make_member() device = make_device(owner["uid"]) flag = raise_flag("refusal_mismatch", device_uid=device["uid"], user_uid=owner["uid"], detail="test") listed = client.get("/admin/nodes", headers=admin_headers(admin)).json()["flags"] assert flag["uid"] in {item["uid"] for item in listed} assert client.post(f"/admin/nodes/flags/{flag['uid']}/resolve", headers=admin_headers(admin)).status_code == 200 assert flag["uid"] not in {item["uid"] for item in list_flags()} assert client.post(f"/admin/nodes/flags/{flag['uid']}/resolve", headers=admin_headers(admin)).status_code == 409 def test_unknown_flag_is_404(client, admin): assert client.post("/admin/nodes/flags/nope/resolve", headers=admin_headers(admin)).status_code == 404 def test_junior_admin_cannot_resolve_a_senior_admins_flag(client): senior = make_admin() junior = make_admin() device = make_device(senior["uid"]) flag = raise_flag("integrity_failure", device_uid=device["uid"], user_uid=senior["uid"], detail="test") client.post(f"/admin/nodes/flags/{flag['uid']}/resolve", headers=admin_headers(junior)) assert flag["uid"] in {item["uid"] for item in list_flags()}