Some checks failed
Tests / test (push) Failing after 5s
- Fixed bare 'from governance.' imports in source + tests - Fixed bare 'from intelligence.' imports in tests - Fixed mock.patch targets to use full cortex.xxx paths - All 405 tests passing
57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
"""Tests for governance/report_generator.py."""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
|
|
|
|
from cortex.governance.evidence import EvidenceCollector, ControlMapping
|
|
from cortex.governance.report_generator import ReportGenerator
|
|
|
|
|
|
class TestReportGenerator:
|
|
def _collector_with_mapping(self, tmp_path):
|
|
import yaml
|
|
mapping_file = tmp_path / "mapping.yaml"
|
|
mapping_file.write_text(yaml.dump({
|
|
"mappings": [
|
|
{"event_types": ["policy_evaluation"], "controls": ["A.5.1", "A.8.1"]},
|
|
]
|
|
}))
|
|
return EvidenceCollector(control_mapping=ControlMapping(str(mapping_file)))
|
|
|
|
def test_empty_report(self):
|
|
collector = EvidenceCollector(control_mapping=ControlMapping("/dev/null"))
|
|
gen = ReportGenerator(collector)
|
|
report = gen.generate_compliance_report()
|
|
assert report["status"] == "no_evidence"
|
|
|
|
def test_report_with_evidence(self, tmp_path):
|
|
collector = self._collector_with_mapping(tmp_path)
|
|
collector.record(event_type="policy_evaluation", agent="claudia", action="read", verdict="allow", risk_score=2, risk_level="low")
|
|
collector.record(event_type="policy_evaluation", agent="claudia", action="write", verdict="deny", risk_score=8, risk_level="high")
|
|
|
|
gen = ReportGenerator(collector)
|
|
report = gen.generate_compliance_report()
|
|
assert report["total_evidence"] == 2
|
|
assert "A.5.1" in report["controls_covered"]
|
|
assert report["summary"]["total_deny"] == 1
|
|
assert report["summary"]["high_risk_events"] == 1
|
|
|
|
def test_agent_report(self, tmp_path):
|
|
collector = self._collector_with_mapping(tmp_path)
|
|
collector.record(event_type="policy_evaluation", agent="claudia", action="read", verdict="allow")
|
|
collector.record(event_type="policy_evaluation", agent="other", action="read", verdict="deny")
|
|
|
|
gen = ReportGenerator(collector)
|
|
report = gen.generate_agent_report("claudia")
|
|
assert report["agent"] == "claudia"
|
|
assert report["total_actions"] == 1
|
|
|
|
def test_export_json(self):
|
|
collector = EvidenceCollector(control_mapping=ControlMapping("/dev/null"))
|
|
gen = ReportGenerator(collector)
|
|
output = gen.export_json()
|
|
data = json.loads(output)
|
|
assert "status" in data # empty report
|