feat(policy): add delegation and escalation contracts
Module Package Release / publish-packages (push) Failing after 6s

This commit is contained in:
2026-08-22 03:12:30 +02:00
parent a9035c4c3b
commit 0c1358b862
6 changed files with 83 additions and 4 deletions
+30
View File
@@ -10,6 +10,8 @@ from govoplan_core.core.configuration_safety import (
ui_managed_configuration_fields_requiring_approval,
)
from govoplan_core.core.policy import (
FunctionAssignmentEscalationRule,
FunctionAssignmentGovernanceDecision,
PolicyDecision,
PolicySourceStep,
parse_policy_source_path,
@@ -19,6 +21,34 @@ from govoplan_core.core.policy import (
class PolicyContractTests(unittest.TestCase):
def test_function_assignment_policy_serializes_delegation_and_escalation(self) -> None:
decision = FunctionAssignmentGovernanceDecision(
allowed=True,
delegation_allowed=True,
maximum_delegation_depth=2,
maximum_delegated_validity_days=30,
escalation_rules=(
FunctionAssignmentEscalationRule(
step="authority",
target_function_id="function-escalation",
timeout_hours=48,
),
),
)
payload = decision.to_dict()
self.assertEqual(2, payload["maximum_delegation_depth"])
self.assertEqual(30, payload["maximum_delegated_validity_days"])
self.assertEqual(
"function-escalation",
payload["escalation_rules"][0]["target_function_id"],
)
self.assertEqual(
"function-escalation",
decision.escalation_rule("authority").target_function_id,
)
def test_policy_source_paths_are_stable_and_round_trip(self) -> None:
self.assertEqual(policy_source_path("system"), "system")
self.assertEqual(policy_source_path("tenant", "tenant-1"), "tenant:tenant-1")