Add shared automation and WebUI editing primitives

This commit is contained in:
2026-07-31 02:48:56 +02:00
parent f0898fcdee
commit 5b55f59a92
42 changed files with 3788 additions and 554 deletions
+48
View File
@@ -0,0 +1,48 @@
from __future__ import annotations
import unittest
from govoplan_core.security.secrets import (
TransientPayloadError,
open_transient_payload,
seal_transient_payload,
)
class TransientPayloadTests(unittest.TestCase):
def test_round_trip_preserves_json_object(self) -> None:
token = seal_transient_payload(
{
"purpose": "test",
"tenant_id": "tenant-1",
"selected": ["one", "two"],
}
)
self.assertEqual(
{
"purpose": "test",
"tenant_id": "tenant-1",
"selected": ["one", "two"],
},
open_transient_payload(token, ttl_seconds=60),
)
def test_tampered_payload_is_rejected(self) -> None:
token = seal_transient_payload({"purpose": "test"})
replacement = "A" if token[-1] != "A" else "B"
with self.assertRaisesRegex(
TransientPayloadError, "invalid or expired"
):
open_transient_payload(f"{token[:-1]}{replacement}", ttl_seconds=60)
def test_non_positive_ttl_is_rejected(self) -> None:
token = seal_transient_payload({"purpose": "test"})
with self.assertRaisesRegex(ValueError, "TTL must be positive"):
open_transient_payload(token, ttl_seconds=0)
if __name__ == "__main__":
unittest.main()