generated from coulomb/repo-seed
feat: finish mailbox evidence scanner mvp
This commit is contained in:
9
tests/fixtures/mailbox/challenge_response.eml
vendored
Normal file
9
tests/fixtures/mailbox/challenge_response.eml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
From: Sender Verification <verify@example.net>
|
||||
To: sender@example.com
|
||||
Subject: Sender verification required
|
||||
Date: Tue, 02 Jun 2026 10:09:00 +0000
|
||||
Message-ID: <challenge-response@example.net>
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
|
||||
This is a challenge-response message. Please verify yourself before your message
|
||||
can be delivered to challenge@example.com.
|
||||
1
tests/fixtures/mailbox/parse_failed.eml
vendored
Normal file
1
tests/fixtures/mailbox/parse_failed.eml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -72,6 +72,26 @@ class ParserTests(unittest.TestCase):
|
||||
self.assertIsNotNone(candidate)
|
||||
self.assertEqual(candidate.event_type, "notification.endpoint.unknown")
|
||||
|
||||
def test_challenge_response_stays_identity_uncertain(self) -> None:
|
||||
_inbound, parsed, candidate = parse_message_file(FIXTURES / "challenge_response.eml", mailbox_id="test")
|
||||
self.assertEqual(parsed.message_class, MessageClass.CHALLENGE_RESPONSE)
|
||||
self.assertIsNotNone(candidate)
|
||||
self.assertEqual(candidate.event_type, "interaction.unverified_actor_interaction")
|
||||
self.assertEqual(candidate.assessment_subclass, "undef.identity_uncertain")
|
||||
|
||||
def test_parse_failure_is_reportable_diagnostic(self) -> None:
|
||||
_inbound, parsed, candidate = parse_message_file(FIXTURES / "parse_failed.eml", mailbox_id="test")
|
||||
self.assertEqual(parsed.message_class, MessageClass.PARSE_FAILED)
|
||||
self.assertIsNotNone(candidate)
|
||||
self.assertEqual(candidate.event_type, "diagnostic.message.parse_failed")
|
||||
self.assertEqual(candidate.assessment_subclass, "undef.parse_failed")
|
||||
|
||||
def test_dsn_detail_fields_are_preserved_as_notes(self) -> None:
|
||||
_inbound, parsed, _candidate = parse_message_file(FIXTURES / "hard_bounce.eml", mailbox_id="test")
|
||||
self.assertIn("final_recipient=rfc822; missing@example.com", parsed.notes)
|
||||
self.assertIn("action=failed", parsed.notes)
|
||||
self.assertIn("diagnostic_code=smtp; 550 5.1.1 User unknown", parsed.notes)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -28,13 +28,13 @@ class ScannerTests(unittest.TestCase):
|
||||
second = scan_mailbox(config)
|
||||
full = scan_mailbox(config, full_rescan=True, report_only_new=True)
|
||||
|
||||
self.assertEqual(first.scan.messages_seen, 9)
|
||||
self.assertEqual(first.scan.messages_new, 9)
|
||||
self.assertGreaterEqual(first.scan.evidence_events_created, 9)
|
||||
self.assertEqual(first.scan.messages_seen, 11)
|
||||
self.assertEqual(first.scan.messages_new, 11)
|
||||
self.assertGreaterEqual(first.scan.evidence_events_created, 11)
|
||||
self.assertEqual(second.scan.messages_seen, 0)
|
||||
self.assertEqual(second.scan.messages_new, 0)
|
||||
self.assertEqual(second.scan.evidence_events_created, 0)
|
||||
self.assertEqual(full.scan.messages_seen, 9)
|
||||
self.assertEqual(full.scan.messages_seen, 11)
|
||||
self.assertEqual(full.scan.messages_new, 0)
|
||||
self.assertEqual(full.scan.evidence_events_created, 0)
|
||||
self.assertTrue(first.report_path and first.report_path.exists())
|
||||
|
||||
Reference in New Issue
Block a user