import plistlib from pathlib import Path from applepy.mscp_audit_parse import parse_audit_plist def test_parse_audit_plist_per_rule(tmp_path: Path) -> None: plist_path = tmp_path / "org.applepy_mscp.audit.plist" payload = { "lastComplianceCheck": "2026-01-01", "rule_a": {"finding": False}, "rule_b": {"finding": True, "exempt": 0}, "rule_c": {"finding": True, "exempt": 1}, } plist_path.write_bytes(plistlib.dumps(payload)) findings = parse_audit_plist(plist_path) ids = {f.id for f in findings} assert "mscp-rule_a" in ids assert "mscp-rule_b" in ids assert "mscp-rule_c" in ids assert len(findings) == 3 by_id = {f.id: f for f in findings} assert "rule_a" in by_id["mscp-rule_a"].description assert "compliant" in by_id["mscp-rule_a"].description.lower() assert "rule_b" in by_id["mscp-rule_b"].description assert "non-compliant" in by_id["mscp-rule_b"].description.lower() assert "exempt" in by_id["mscp-rule_c"].description.lower() def test_parse_missing_plist(tmp_path: Path) -> None: assert parse_audit_plist(tmp_path / "nope.plist") == []