from __future__ import annotations from copy import deepcopy from dataclasses import dataclass from .differential import DifferentialProbe from .model import Response @dataclass class AuditFixture: """In-process audit-core shape used to calibrate the E2 pack. No sockets.""" enforce_tenant: bool def __post_init__(self) -> None: self.events = { "event-a": { "id": "event-a", "tenant": "tenant-a", "correlation_id": "corr-shared", "label": "fixture-a", }, "event-b": { "id": "event-b", "tenant": "tenant-b", "correlation_id": "corr-shared", "label": "fixture-b", }, } def snapshot_events(self) -> object: return deepcopy(self.events) def _visible(self, actor_tenant: str, item: dict) -> bool: return (not self.enforce_tenant) or item["tenant"] == actor_tenant def get(self, actor_tenant: str, event_id: str) -> Response: item = self.events.get(event_id) if item is None or not self._visible(actor_tenant, item): return Response(404, {"error": "not_found"}) return Response(200, deepcopy(item)) def by_correlation(self, actor_tenant: str, correlation_id: str) -> Response: items = [ deepcopy(item) for item in self.events.values() if item["correlation_id"] == correlation_id and self._visible(actor_tenant, item) ] return Response(200, {"events": items}) def append(self, actor_tenant: str, event: dict) -> Response: if self.enforce_tenant and event["tenant"] != actor_tenant: return Response(403, {"error": "forbidden"}) self.events[event["id"]] = deepcopy(event) return Response(202, {"id": event["id"], "tenant": event["tenant"]}) def audit_probe_suite(service: AuditFixture) -> list[DifferentialProbe]: markers = ("event-b", "tenant-b", "fixture-b") forged = { "id": "event-forged-b", "tenant": "tenant-b", "correlation_id": "corr-shared", "label": "fixture-forged", } return [ DifferentialProbe( "audit-event-by-id", "read", lambda: service.get("tenant-b", "event-b"), lambda: service.get("tenant-a", "event-b"), lambda: service.get("tenant-a", "absent"), markers, ), DifferentialProbe( "audit-correlation-slice", "read", lambda: service.by_correlation("tenant-b", "corr-shared"), lambda: service.by_correlation("tenant-a", "corr-shared"), lambda: service.by_correlation("tenant-a", "corr-absent"), markers, hide_existence=False, ), DifferentialProbe( "audit-append-as-b", "create", lambda: Response(202, {"id": "owner-control"}), lambda: service.append("tenant-a", forged), lambda: Response(403, {"error": "forbidden"}), markers + ("event-forged-b",), state=service.snapshot_events, hide_existence=False, ), ]