test_permission_matrix.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. def test_fixed_role_permission_matrix_is_monotonic():
  2. from app.core.system.permissions import ROLE_PERMISSIONS
  3. viewer = ROLE_PERMISSIONS["viewer"]
  4. editor = ROLE_PERMISSIONS["editor"]
  5. admin = ROLE_PERMISSIONS["admin"]
  6. assert viewer < editor < admin
  7. assert "governance:read" in viewer
  8. assert "governance:edit" in editor
  9. assert "users:manage" in admin
  10. assert "workflow:activate" in admin
  11. def test_permissions_are_derived_server_side_from_roles():
  12. from app.core.system.permissions import permissions_for_roles
  13. permissions = permissions_for_roles(["viewer", "editor"])
  14. assert "governance:read" in permissions
  15. assert "governance:edit" in permissions
  16. assert "users:manage" not in permissions
  17. def test_every_api_path_has_an_explicit_policy():
  18. from app import create_app
  19. from app.core.system.permissions import permission_for_request
  20. app = create_app()
  21. for rule in app.url_map.iter_rules():
  22. if not rule.rule.startswith("/api/"):
  23. continue
  24. for method in rule.methods - {"HEAD", "OPTIONS"}:
  25. assert permission_for_request(rule.rule, method) is not None, (
  26. method,
  27. rule.rule,
  28. )