Add approval template revision administration

This commit is contained in:
2026-08-04 01:04:39 +02:00
parent 3abbe117e5
commit 7f64247625
15 changed files with 833 additions and 36 deletions
+75
View File
@@ -318,6 +318,81 @@ class ApprovalRuntimeTests(unittest.TestCase):
subject_digest="b" * 64,
)
def test_template_history_and_structural_compare_are_tenant_bound(self) -> None:
original = ApprovalTemplateCreateCommand(
key="monthly-release",
title="Monthly release",
description="Initial process",
steps=(
ApprovalStepDefinition(
"review",
"Review",
(ApprovalActorSelector("role", "reviewers"),),
),
),
)
revised_command = ApprovalTemplateCreateCommand(
key="monthly-release",
title="Monthly release approval",
description="Initial process",
steps=(
ApprovalStepDefinition(
"review",
"Independent review",
(ApprovalActorSelector("role", "reviewers"),),
),
),
)
with self.Session() as session:
created = self.service.create_template(
session,
self.requester,
command=original,
idempotency_key="history-template-1",
)
revised = self.service.revise_template(
session,
self.requester,
template_id=created.id,
command=revised_command,
expected_revision=1,
idempotency_key="history-template-2",
)
self.assertEqual(2, revised.revision)
history = self.service.template_history(
session,
self.requester,
template_id=created.id,
)
self.assertEqual([2, 1], [item["revision"] for item in history])
self.assertIsNotNone(history[1]["superseded_at"])
self.assertEqual("requester", history[0]["actor_id"])
comparison = self.service.compare_template_revisions(
session,
self.requester,
template_id=created.id,
from_revision=1,
to_revision=2,
)
changes = {item["path"]: item for item in comparison["changes"]}
self.assertEqual(
"Monthly release",
changes["/title"]["before"],
)
self.assertEqual(
"Independent review",
changes["/steps/0/label"]["after"],
)
with self.assertRaises(LookupError):
self.service.template_history(
session,
Principal("tenant-2", "other"),
template_id=created.id,
)
if __name__ == "__main__":
unittest.main()