Files
zyt/app/tests/test_permissions.py
2026-08-10 17:29:05 +08:00

53 lines
2.1 KiB
Python

"""Tests for permission semantics reused by page and action guards."""
from doctor_workstation.core.permissions import PermissionSet
def test_global_wildcard_grants_every_page_and_action() -> None:
"""The server's global wildcard remains authoritative."""
permissions = PermissionSet(["*"])
assert permissions.is_superuser
assert permissions.can_access_page("doctor.appointment/lists")
assert permissions.can_perform_action("doctor.appointment/complete")
assert permissions.can("doctor.appointment", "complete")
def test_all_and_any_accept_sequences_or_positional_values() -> None:
"""AND and OR helpers preserve the two web-client permission semantics."""
permissions = PermissionSet(["doctor.appointment/lists", "doctor.appointment/complete"])
assert permissions.all("doctor.appointment/lists", "doctor.appointment/complete")
assert permissions.has_all(["doctor.appointment/lists", "doctor.appointment/complete"])
assert not permissions.all("doctor.appointment/lists", "doctor.appointment/cancel")
assert permissions.any(["doctor.appointment/cancel", "doctor.appointment/complete"])
assert not permissions.has_any([])
assert permissions.has_all([])
def test_page_action_categories_and_resource_wildcards() -> None:
"""Explicit page/action categories share checks without overloading UI code."""
permissions = PermissionSet(
pages=["patients/view"],
actions=["tcm.prescriptionLibrary/*"],
)
assert permissions.can_access_page("patients/view")
assert permissions.can("tcm.prescriptionLibrary", "add")
assert permissions.can_perform_action("tcm.prescriptionLibrary/delete")
assert not permissions.can_perform_action("tcm.prescription/delete")
assert "patients/view" in permissions
def test_permission_set_normalises_and_deduplicates_values() -> None:
"""Whitespace and duplicates do not create surprising guard results."""
permissions = PermissionSet([" alpha/read ", "alpha/read", ""])
assert list(permissions) == ["alpha/read"]
assert len(permissions) == 1
assert bool(permissions)