35 lines
1.6 KiB
Python
35 lines
1.6 KiB
Python
# retoor <retoor@molodetz.nl>
|
|
|
|
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()}
|