feat: add forensic redaction controls

This commit is contained in:
Christian Krakau-Louis
2026-05-23 13:21:03 +02:00
parent c2057acc71
commit 8bce8a8595
16 changed files with 399 additions and 38 deletions
+22
View File
@@ -18,6 +18,7 @@ from zipfile import ZipFile
import pytest
from app.models.report import DMARCReport, ForensicReport
from app.models.setting import Setting
from app.services.imap_client import IMAPClient
from app.services.report_store import ReportStore
from app.tests.test_forensic_parser import SAMPLE_FORENSIC_EMAIL
@@ -641,6 +642,27 @@ class TestProcessSingleEmail:
assert db_session.query(ForensicReport).count() == 1
assert ReportStore.get_instance().get_domains() == []
def test_forensic_report_uses_configured_redaction_policy(self, db_session):
setting = (
db_session.query(Setting).filter(Setting.key == "forensics.redaction_mode").first()
)
if setting is None:
setting = Setting(
key="forensics.redaction_mode",
value_type="string",
category="forensics",
)
db_session.add(setting)
setting.value = "domain_only"
db_session.commit()
client = self._make_client(db=db_session)
stats = {"forensic_reports_found": 0, "duplicate_forensic_reports": 0, "errors": []}
assert client._process_forensic_email(SAMPLE_FORENSIC_EMAIL, stats=stats, message_id="1")
report = db_session.query(ForensicReport).one()
assert report.original_mail_from == "***@example.com"
def test_forensic_report_without_database_is_skipped(self):
client = self._make_client()