Add TLS reports capabilities
This commit is contained in:
+29
-1
@@ -7,7 +7,7 @@ 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.message_processor import _store_report, _store_tls_report
|
||||
from app.models import MailMessage
|
||||
|
||||
|
||||
@@ -32,6 +32,34 @@ def test_duplicate_sha_detection():
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user