79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
import pytest
|
|
from pathlib import Path
|
|
import tempfile
|
|
|
|
from config_auditor.report import ReportGenerator
|
|
from config_auditor.rules import Issue
|
|
|
|
|
|
class TestReportGenerator:
|
|
def test_to_json(self):
|
|
issues = [
|
|
Issue(
|
|
severity="critical",
|
|
category="test",
|
|
message="Test issue",
|
|
file=Path("test.json"),
|
|
)
|
|
]
|
|
generator = ReportGenerator()
|
|
result = generator.to_json(issues)
|
|
|
|
assert "critical" in result
|
|
assert "Test issue" in result
|
|
|
|
def test_to_yaml(self):
|
|
issues = [
|
|
Issue(
|
|
severity="warning",
|
|
category="test",
|
|
message="Warning issue",
|
|
file=Path("test.json"),
|
|
)
|
|
]
|
|
generator = ReportGenerator()
|
|
result = generator.to_yaml(issues)
|
|
|
|
assert "warning" in result
|
|
assert "Warning issue" in result
|
|
|
|
def test_to_text(self):
|
|
issues = [
|
|
Issue(
|
|
severity="critical",
|
|
category="test",
|
|
message="Critical issue",
|
|
file=Path("test.json"),
|
|
suggestion="Fix this",
|
|
)
|
|
]
|
|
generator = ReportGenerator()
|
|
|
|
output = []
|
|
generator.to_text(issues, output.append)
|
|
|
|
assert len(output) > 0
|
|
assert any("Critical" in line for line in output)
|
|
|
|
def test_empty_issues_text_output(self):
|
|
issues = []
|
|
generator = ReportGenerator()
|
|
|
|
output = []
|
|
generator.to_text(issues, output.append)
|
|
|
|
assert any("No issues found" in line for line in output)
|
|
|
|
def test_generate_summary(self):
|
|
issues = [
|
|
Issue(severity="critical", category="a", message="1", file=Path("f1")),
|
|
Issue(severity="critical", category="b", message="2", file=Path("f2")),
|
|
Issue(severity="warning", category="c", message="3", file=Path("f3")),
|
|
]
|
|
generator = ReportGenerator()
|
|
summary = generator.generate_summary(issues)
|
|
|
|
assert summary["total"] == 3
|
|
assert summary["by_severity"]["critical"] == 2
|
|
assert summary["by_severity"]["warning"] == 1
|