test_access_context.py 1.3 KB

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