the-custodian/docs/changes/netkingdom-target-2026-10-16/group-postgres-r1/native-fixture/test_snapshot.py
codex 9b732544d0
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Reject generated-only commits / generated-commit-guard (push) Successful in 10s
docs: preserve reviewed NetKingdom session artifacts
2026-11-01 23:02:08 +01:00

60 lines
2.5 KiB
Python

"""Local source-backed snapshot proof; no PostgreSQL/Docker imports or calls."""
import ast
import json
from pathlib import Path
import sys
import unittest
HERE = Path(__file__).resolve().parent
sys.path[:0] = [str(HERE.parent / 'postimage/identity-provisioner'), str(HERE)]
from test_service_groups import Directory, req
def snapshot_from(path):
source = ast.parse(path.read_text())
selected = [node for node in source.body if isinstance(node, ast.FunctionDef) and node.name in {'require', 'snapshot'}]
namespace = {}
exec(compile(ast.Module(body=selected, type_ignores=[]), str(path), 'exec'), namespace)
return namespace['snapshot']
class SnapshotTests(unittest.TestCase):
def test_frozen_fixture_changes_saved_prestate_and_keeps_deleted_backing_sets(self):
old = snapshot_from(HERE / 'revisions/r4/probe.py')
d = Directory()
before = old(d)
d.ensure_service_groups(req())
self.assertIn('forge-coulomb-owners', before['groups'])
d.revoke_service_groups(req(ensure_idempotency_key=req()['idempotency_key'],
ensure_correlation_id=req()['correlation_id'], delete_if_empty=True))
orphan_ids = set(d.members) - set(d.groups.values())
self.assertEqual({4, 5}, orphan_ids)
self.assertTrue(all(not d.members[gid] for gid in orphan_ids))
visible = {row['id'] for row in d._directory(d._login())[1]}
self.assertTrue(orphan_ids.isdisjoint(visible))
self.assertNotEqual(before, old(d))
d.storage.cleanup()
def test_snapshot_is_detached_and_complete_prestate_survives_ensure_revoke(self):
snapshot = snapshot_from(HERE / 'probe.py')
d = Directory()
d.members[3].add('tegwick')
before = snapshot(d)
frozen = json.dumps(before, sort_keys=True)
d.ensure_service_groups(req())
self.assertEqual(frozen, json.dumps(before, sort_keys=True))
self.assertNotEqual(before, snapshot(d))
d.revoke_service_groups(req(ensure_idempotency_key=req()['idempotency_key'],
ensure_correlation_id=req()['correlation_id'], delete_if_empty=True))
self.assertEqual(before, snapshot(d))
for mutate in (lambda: d.members[3].add('agent-codex'), lambda: d.members[4].add('agent-codex')):
mutate()
if d.members[4]:
with self.assertRaises(RuntimeError): snapshot(d)
else:
self.assertNotEqual(before, snapshot(d))
d.storage.cleanup()
if __name__ == '__main__':
unittest.main()