Add audit_drift_script/tests/test_core.py
This commit is contained in:
parent
4d283df368
commit
c623a4bc0e
1 changed files with 87 additions and 0 deletions
87
audit_drift_script/tests/test_core.py
Normal file
87
audit_drift_script/tests/test_core.py
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
import pytest
|
||||||
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
from audit_drift_script import core
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def valid_report_dict():
|
||||||
|
return {
|
||||||
|
"timestamp": datetime.utcnow().isoformat(),
|
||||||
|
"run_id": "run_001",
|
||||||
|
"stratum": "pinned",
|
||||||
|
"decision": "PASS",
|
||||||
|
"warn_rate": 0.05,
|
||||||
|
"unknown_rate": 0.01
|
||||||
|
}
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def invalid_report_dict_missing_field():
|
||||||
|
return {
|
||||||
|
"timestamp": datetime.utcnow().isoformat(),
|
||||||
|
# missing run_id
|
||||||
|
"stratum": "pinned",
|
||||||
|
"decision": "PASS",
|
||||||
|
"warn_rate": 0.05,
|
||||||
|
"unknown_rate": 0.01
|
||||||
|
}
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def tmp_reports_dir(tmp_path, valid_report_dict):
|
||||||
|
dir_path = tmp_path / "reports"
|
||||||
|
dir_path.mkdir()
|
||||||
|
sub_dir = dir_path / "sub"
|
||||||
|
sub_dir.mkdir()
|
||||||
|
# create two files
|
||||||
|
for i, strata in enumerate(["pinned", "unpinned"], 1):
|
||||||
|
report_path = sub_dir / f"report_{i}.json"
|
||||||
|
d = valid_report_dict.copy()
|
||||||
|
d["stratum"] = strata
|
||||||
|
d["run_id"] = f"run_{i}"
|
||||||
|
d["decision"] = "PASS" if i == 1 else "FAIL"
|
||||||
|
report_path.write_text(json.dumps(d))
|
||||||
|
return dir_path
|
||||||
|
|
||||||
|
def test_validate_report_schema_valid(valid_report_dict):
|
||||||
|
assert core.validate_report_schema(valid_report_dict) is True
|
||||||
|
|
||||||
|
def test_validate_report_schema_invalid(invalid_report_dict_missing_field):
|
||||||
|
assert core.validate_report_schema(invalid_report_dict_missing_field) is False
|
||||||
|
|
||||||
|
def test_reportdata_from_json(valid_report_dict):
|
||||||
|
report = core.ReportData.from_json(valid_report_dict)
|
||||||
|
assert isinstance(report, core.ReportData)
|
||||||
|
assert report.run_id == "run_001"
|
||||||
|
assert isinstance(report.timestamp, datetime)
|
||||||
|
|
||||||
|
def test_aggregate_statistics(valid_report_dict):
|
||||||
|
reports = [core.ReportData.from_json(valid_report_dict)]
|
||||||
|
agg = core.aggregate_statistics(reports)
|
||||||
|
assert isinstance(agg, dict)
|
||||||
|
assert 'pinned' in agg
|
||||||
|
assert 'total' in agg
|
||||||
|
|
||||||
|
def test_analyze_reports_directory(tmp_reports_dir):
|
||||||
|
result = core.analyze_reports(str(tmp_reports_dir))
|
||||||
|
assert isinstance(result, dict)
|
||||||
|
assert 'pinned' in result
|
||||||
|
assert 'unpinned' in result
|
||||||
|
|
||||||
|
pinned_stats = result['pinned']
|
||||||
|
unpinned_stats = result['unpinned']
|
||||||
|
|
||||||
|
assert pinned_stats['count'] >= 1
|
||||||
|
assert unpinned_stats['count'] >= 1
|
||||||
|
|
||||||
|
def test_analyze_reports_with_invalid_json(tmp_path, valid_report_dict):
|
||||||
|
bad_file = tmp_path / "drift_report.json"
|
||||||
|
bad_file.write_text('{invalid json}')
|
||||||
|
sub_dir = tmp_path / "sub"
|
||||||
|
sub_dir.mkdir()
|
||||||
|
good_file = sub_dir / "drift_report.json"
|
||||||
|
good_file.write_text(json.dumps(valid_report_dict))
|
||||||
|
|
||||||
|
result = core.analyze_reports(str(tmp_path))
|
||||||
|
# only the good one counted
|
||||||
|
assert isinstance(result, dict)
|
||||||
|
assert sum(v['count'] for v in result.values()) == 1
|
||||||
Loading…
Reference in a new issue