test_access_context.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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(
  21. {"governance:read", "rules:read"}
  22. )
  23. def test_admin_access_context_is_explicitly_global():
  24. from app.core.knowledge.access import build_access_context
  25. context = build_access_context(
  26. GrantSession([]),
  27. identity={"id": "admin-1", "roles": ["admin"]},
  28. requested_business_domains=None,
  29. correlation_id="correlation-2",
  30. )
  31. assert context.global_access is True
  32. assert context.business_domain_uids == frozenset()