from email.message import EmailMessage from pathlib import Path from sqlalchemy import create_engine from sqlalchemy.orm import Session from app.config import Settings from app.db import Base from app.attachment_extractor import ExtractedReport from app.message_processor import _store_report from app.models import MailMessage def test_duplicate_sha_detection(): engine = create_engine("sqlite:///:memory:", future=True) Base.metadata.create_all(engine) session = Session(engine) mail = MailMessage(inbox_id="tukutoi", imap_uid="1", folder="DMARC", status="skipped") session.add(mail) session.commit() payload = Path("tests/fixtures/sample_dmarc.xml").read_bytes() extracted = ExtractedReport("report.xml", payload, "0" * 64) settings = Settings.model_validate({"alerts": {"email": {"enabled": False}}}) report, duplicate = _store_report(session, settings, settings.inboxes[0] if settings.inboxes else _Inbox(), mail, extracted) session.commit() second, second_duplicate = _store_report(session, settings, settings.inboxes[0] if settings.inboxes else _Inbox(), mail, extracted) assert report is not None assert duplicate is None assert second is None assert second_duplicate == report class _Inbox: id = "tukutoi" domain = "tukutoi.com"