| """Tests for audit log append and verification.""" | |
| from pathlib import Path | |
| def test_audit_log_record_and_verify(tmp_path): | |
| from agents.audit import AuditLog | |
| path = tmp_path / "audit.jsonl" | |
| log = AuditLog(secret_key="test-secret", log_path=path) | |
| log.record("inc-1", "triage", "tool_call", tool_name="kubectl_get", tool_args={"resource": "pods"}) | |
| log.record("inc-1", "triage", "tool_result", result_summary="ok") | |
| verify = log.verify_integrity() | |
| assert verify["ok"] is True | |
| assert verify["entries"] == 2 | |
| def test_audit_verify_fails_on_tamper(tmp_path): | |
| from agents.audit import AuditLog | |
| path = tmp_path / "audit.jsonl" | |
| log = AuditLog(secret_key="test-secret", log_path=path) | |
| log.record("inc-2", "coordinator", "incident_start", result_summary="test") | |
| text = path.read_text(encoding="utf-8") | |
| path.write_text(text.replace("incident_start", "incident_starx"), encoding="utf-8") | |
| verify = log.verify_integrity() | |
| assert verify["ok"] is False | |
| def test_audit_tail_limit_and_offset(tmp_path): | |
| from agents.audit import AuditLog | |
| path = tmp_path / "audit.jsonl" | |
| log = AuditLog(secret_key="test-secret", log_path=path) | |
| for idx in range(5): | |
| log.record(f"inc-{idx}", "coordinator", "incident_start", result_summary=f"r{idx}") | |
| entries = log.tail(limit=2) | |
| assert len(entries) == 2 | |
| shifted = log.tail(limit=10, offset=3) | |
| assert len(shifted) == 2 | |