Define governed View projection contract

This commit is contained in:
2026-07-31 17:52:57 +02:00
parent cf01545806
commit 5ee85d07d6
5 changed files with 194 additions and 43 deletions
+67
View File
@@ -0,0 +1,67 @@
from __future__ import annotations
import unittest
from govoplan_core.core.access import PrincipalRef
from govoplan_core.core.modules import ModuleContext, ModuleManifest
from govoplan_core.core.policy import (
CAPABILITY_POLICY_VIEW_GOVERNANCE,
DefinitionScopeRef,
ViewGovernanceDecision,
ViewGovernancePolicy,
ViewGovernanceRequest,
view_governance_policy,
)
from govoplan_core.core.registry import PlatformRegistry
class _ViewPolicy:
def resolve_view_action(self, session=None, *, request):
del session
return ViewGovernanceDecision(
allowed=request.action != "assign",
allowed_view_ids=frozenset(request.candidate_view_ids[:1]),
)
class ViewGovernanceContractTests(unittest.TestCase):
def test_policy_is_runtime_resolved_through_core_contract(self) -> None:
provider = _ViewPolicy()
self.assertIsInstance(provider, ViewGovernancePolicy)
registry = PlatformRegistry()
registry.register(
ModuleManifest(
id="view_governance_test",
name="View governance test",
version="test",
capability_factories={
CAPABILITY_POLICY_VIEW_GOVERNANCE: lambda context: provider,
},
)
)
registry.configure_capability_context(
ModuleContext(registry=registry, settings=object())
)
resolved = view_governance_policy(registry)
self.assertIs(provider, resolved)
decision = resolved.resolve_view_action(
request=ViewGovernanceRequest(
tenant_id="tenant-1",
action="view",
actor=PrincipalRef(
account_id="account-1",
membership_id=None,
tenant_id="tenant-1",
),
target_scope=DefinitionScopeRef("user", "account-1"),
candidate_view_ids=("view-1", "view-2"),
)
)
self.assertTrue(decision.allowed)
self.assertEqual(frozenset({"view-1"}), decision.allowed_view_ids)
if __name__ == "__main__":
unittest.main()