from pathlib import Path from scripts.adapters.bandit import parse_bandit_output _FIXTURES = Path(__file__).parent / "fixtures" def test_parses_findings_with_severity_lowercase(): payload = (_FIXTURES / "bandit_sample.json").read_text() findings = parse_bandit_output(payload) by_rule = {f.rule_id: f for f in findings} assert "B608" in by_rule assert by_rule["B608"].severity == "high" assert by_rule["B608"].file == "src/api.py" assert by_rule["B608"].line == 45 assert by_rule["B608"].end_line == 45 assert "SQL injection" in by_rule["B608"].message def test_handles_empty_results(): findings = parse_bandit_output('{"results": [], "metrics": {}}') assert findings == [] def test_handles_invalid_json(): findings = parse_bandit_output('not json') assert findings == []