test_access_context.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from __future__ import annotations
  2. class GrantSession:
  3. def __init__(self, domains):
  4. self.domains = domains
  5. def execute(self, _statement, _params):
  6. return self
  7. def scalars(self):
  8. return self
  9. def all(self):
  10. return self.domains
  11. def test_viewer_access_context_uses_only_server_side_domain_grants():
  12. from app.core.knowledge.access import build_access_context
  13. context = build_access_context(
  14. GrantSession(["domain-a", "domain-b"]),
  15. identity={"id": "user-1", "roles": ["viewer"]},
  16. requested_business_domains=["domain-b", "domain-not-granted"],
  17. correlation_id="correlation-1",
  18. )
  19. assert context.business_domain_uids == frozenset({"domain-b"})
  20. assert context.permissions == frozenset({"governance:read"})
  21. def test_admin_access_context_is_explicitly_global():
  22. from app.core.knowledge.access import build_access_context
  23. context = build_access_context(
  24. GrantSession([]),
  25. identity={"id": "admin-1", "roles": ["admin"]},
  26. requested_business_domains=None,
  27. correlation_id="correlation-2",
  28. )
  29. assert context.global_access is True
  30. assert context.business_domain_uids == frozenset()