audit-labs/audit-report

Turn audit-tools evidence packages into control-mapped, auditor-ready reports.

clone: git clone https://gitbay.org/audit-labs/audit-report.git

v1.0.0: tests/test_loader.py · raw

 1"""Tests for package loading and platform detection."""
 2
 3from pathlib import Path
 4
 5import pytest
 6
 7from audit_report.loader import detect_platform, load_package
 8
 9FIXTURES = Path(__file__).parent / "fixtures"
10
11
12@pytest.mark.parametrize(
13    ("dir_name", "platform", "subject"),
14    [
15        ("aws_audit_default_2026-07-29", "aws", "default"),
16        ("github_audit_audit-labs_2026-07-29", "github", "audit-labs"),
17        ("gitlab_audit_my_group_2026-01-01", "gitlab", "my_group"),
18        ("something_else", "unknown", "something_else"),
19    ],
20)
21def test_detect_platform(dir_name, platform, subject):
22    assert detect_platform(dir_name) == (platform, subject)
23
24
25def test_load_package_reads_tables():
26    pkg = load_package(FIXTURES / "aws_audit_acme_2026-01-01")
27    assert pkg.platform == "aws"
28    assert pkg.subject == "acme"
29    assert pkg.has("iam_users")
30    assert len(pkg.table("iam_users")) == 2
31    assert pkg.table("iam_users")[0]["user"] == "alice"
32    # Present-but-empty CSV is a known-empty table, not an absent one.
33    assert pkg.has("s3_public_access")
34    assert pkg.table("s3_public_access") == []
35    # Absent table returns empty list, reports as not present.
36    assert not pkg.has("nonexistent")
37    assert pkg.table("nonexistent") == []
38
39
40def test_load_missing_directory_raises():
41    with pytest.raises(FileNotFoundError):
42        load_package(FIXTURES / "does-not-exist")
43
44
45def test_load_directory_without_csvs_raises(tmp_path):
46    with pytest.raises(ValueError, match="no CSV files"):
47        load_package(tmp_path)