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
v0.1.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)