feat: add forensic report parsing storage

This commit is contained in:
Christian Krakau-Louis
2026-05-23 12:52:54 +02:00
parent ca9e0bfd4a
commit 1f954c9e08
18 changed files with 1005 additions and 17 deletions
+24 -1
View File
@@ -19,10 +19,11 @@ from unittest.mock import MagicMock, patch
import pytest
from app.models.report import DMARCReport
from app.models.report import DMARCReport, ForensicReport
from app.services.gmail_client import GmailClient
from app.services.report_store import ReportStore
from app.tests.test_data import SAMPLE_XML
from app.tests.test_forensic_parser import SAMPLE_FORENSIC_EMAIL
# ---------------------------------------------------------------------------
# Helpers
@@ -442,6 +443,28 @@ class TestProcessMessage:
assert stats["details"][0]["status"] == "error"
assert stats["details"][0]["message_id"] == "bad-id"
def test_forensic_report_is_processed_separately(self, db_session):
client = _make_client(db=db_session)
service = MagicMock()
service.users.return_value.messages.return_value.get.return_value.execute.return_value = {
"raw": _b64_raw(SAMPLE_FORENSIC_EMAIL)
}
stats = {
"reports_found": 0,
"forensic_reports_found": 0,
"duplicate_forensic_reports": 0,
"errors": [],
}
count = client._process_message(service, "msg-forensic", stats)
assert count == 1
assert stats["reports_found"] == 0
assert stats["forensic_reports_found"] == 1
assert stats["details"][0]["reason"] == "forensic_report"
assert db_session.query(DMARCReport).count() == 0
assert db_session.query(ForensicReport).count() == 1
# ===========================================================================
# _process_attachments