mirror of
https://github.com/mgeeky/decode-spam-headers.git
synced 2026-02-22 21:43:30 +01:00
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from app.engine.analyzer import HeaderAnalyzer
|
|
from app.engine.models import AnalysisRequest, AnalysisResult, TestResult
|
|
|
|
FIXTURES_DIR = Path(__file__).resolve().parents[1] / "fixtures"
|
|
|
|
|
|
def test_analyzer_runs_selected_tests_and_reports_progress() -> None:
|
|
raw_headers = (FIXTURES_DIR / "sample_headers.txt").read_text(encoding="utf-8")
|
|
request = AnalysisRequest(
|
|
headers=raw_headers,
|
|
config={
|
|
"test_ids": [12, 13],
|
|
"resolve": False,
|
|
"decode_all": False,
|
|
},
|
|
)
|
|
|
|
progress_events: list[tuple[int, int, str]] = []
|
|
|
|
def on_progress(current_index: int, total_tests: int, test_name: str) -> None:
|
|
progress_events.append((current_index, total_tests, test_name))
|
|
|
|
analyzer = HeaderAnalyzer()
|
|
result = analyzer.analyze(request, progress_callback=on_progress)
|
|
|
|
assert isinstance(result, AnalysisResult)
|
|
assert len(result.results) == 2
|
|
assert [item.test_id for item in result.results] == [12, 13]
|
|
assert all(isinstance(item, TestResult) for item in result.results)
|
|
|
|
assert result.metadata.total_tests == 2
|
|
assert (
|
|
result.metadata.passed_tests
|
|
+ result.metadata.failed_tests
|
|
+ result.metadata.skipped_tests
|
|
) == result.metadata.total_tests
|
|
|
|
assert progress_events
|
|
assert all(total == 2 for _, total, _ in progress_events)
|
|
assert progress_events[0][0] == 0
|
|
assert progress_events[-1][0] == 1 |