robotproof-studio-verifiabl.../tests/test_audit.py

28 lines
723 B
Python

from datetime import datetime
from robotproof_studio.contracts import PlanDelta
from robotproof_studio.audit import AuditLog
def make_delta(id_suffix: str) -> PlanDelta:
return PlanDelta(delta_id=f"d-{id_suffix}", timestamp=datetime.utcnow().isoformat() + "Z", data={"val": id_suffix})
def test_audit_log_chain_and_detection():
log = AuditLog()
d1 = make_delta("1")
d1.sign("tester")
e1 = log.append(d1)
d2 = make_delta("2")
d2.sign("tester")
e2 = log.append(d2)
# chain should be valid
assert log.verify_chain() is True
# tamper with second entry's delta_id (simulates external tampering)
log.entries[1].delta_id = "tampered"
assert log.verify_chain() is False