from pathlib import Path from scripts.adapters.pip_audit import parse_pip_audit_output _FIXTURES = Path(__file__).parent / "fixtures" def test_emits_finding_per_vuln(): payload = (_FIXTURES / "pip_audit_sample.json").read_text() findings = parse_pip_audit_output(payload, manifest_path="requirements.txt") assert len(findings) == 1 f = findings[0] assert f.rule_id == "GHSA-8q59-q68h-6hv4" assert f.severity == "high" assert f.tool == "pip-audit" assert "pyyaml" in f.message assert f.file == "requirements.txt" def test_no_finding_when_no_vulns(): payload = '{"dependencies": [{"name": "x", "version": "1", "vulns": []}]}' assert parse_pip_audit_output(payload, manifest_path="requirements.txt") == [] def test_handles_invalid(): assert parse_pip_audit_output("nope", manifest_path="requirements.txt") == []