Files
DMARC-Sentinel/tests/test_storage.py
T

66 lines
2.3 KiB
Python

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, _store_tls_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
def test_tls_report_storage_and_duplicate_sha_detection():
engine = create_engine("sqlite:///:memory:", future=True)
Base.metadata.create_all(engine)
session = Session(engine)
mail = MailMessage(inbox_id="anamaka", imap_uid="1", folder="DMARC", status="skipped")
session.add(mail)
session.commit()
payload = Path("tests/fixtures/sample_tlsrpt.json").read_bytes()
extracted = ExtractedReport("report.json", payload, "1" * 64)
settings = Settings.model_validate({"alerts": {"email": {"enabled": False}}})
report, duplicate = _store_tls_report(session, settings, _TLSInbox(), mail, extracted)
session.commit()
second, second_duplicate = _store_tls_report(session, settings, _TLSInbox(), mail, extracted)
assert report is not None
assert duplicate is None
assert report.domain == "anamaka.net"
assert report.policies[0].total_successful_session_count == 5
assert second is None
assert second_duplicate == report
class _Inbox:
id = "tukutoi"
domain = "tukutoi.com"
class _TLSInbox:
id = "anamaka"
domain = "anamaka.net"