test(campaign): align synchronous send security contract
This commit is contained in:
@@ -4211,18 +4211,17 @@ class ApiSmokeTests(unittest.TestCase):
|
||||
"enqueue_imap_task": False,
|
||||
},
|
||||
)
|
||||
self.assertEqual(sent.status_code, 200, sent.text)
|
||||
self.assertEqual(sent.json()["result"]["sent_count"], 0)
|
||||
self.assertEqual(sent.json()["result"]["failed_count"], 1)
|
||||
self.assertIn("changed after this campaign was built", sent.json()["result"]["results"][0]["message"])
|
||||
self.assertEqual(sent.status_code, 422, sent.text)
|
||||
self.assertIn("Synchronous preflight stopped before contacting SMTP", sent.json()["detail"])
|
||||
|
||||
with SessionLocal() as session:
|
||||
job = session.query(CampaignJob).filter(CampaignJob.campaign_version_id == version_id).one()
|
||||
self.assertEqual(job.send_status, "failed_permanent")
|
||||
attempt = session.query(SendAttempt).filter(SendAttempt.job_id == job.id).one()
|
||||
self.assertIn("changed after this campaign was built", attempt.error_message)
|
||||
self.assertNotIn("smtp.example.invalid", attempt.error_message)
|
||||
self.assertIsNone(attempt.smtp_response)
|
||||
self.assertEqual(job.queue_status, "draft")
|
||||
self.assertEqual(job.send_status, "not_queued")
|
||||
self.assertEqual(
|
||||
session.query(SendAttempt).filter(SendAttempt.job_id == job.id).count(),
|
||||
0,
|
||||
)
|
||||
|
||||
def test_send_now_sends_exact_generated_eml_bytes(self) -> None:
|
||||
headers, _ = self._login()
|
||||
@@ -4286,11 +4285,15 @@ class ApiSmokeTests(unittest.TestCase):
|
||||
"enqueue_imap_task": False,
|
||||
},
|
||||
)
|
||||
self.assertEqual(sent.status_code, 200, sent.text)
|
||||
self.assertEqual(sent.json()["result"]["failed_count"], 1)
|
||||
self.assertIn("Generated EML", sent.json()["result"]["results"][0]["message"])
|
||||
self.assertEqual(sent.status_code, 422, sent.text)
|
||||
self.assertIn("Synchronous preflight stopped before contacting SMTP", sent.json()["detail"])
|
||||
self.assertEqual(list_records(kind="smtp"), [])
|
||||
|
||||
with SessionLocal() as session:
|
||||
job = session.query(CampaignJob).filter(CampaignJob.campaign_version_id == version_id).one()
|
||||
self.assertEqual(job.queue_status, "draft")
|
||||
self.assertEqual(job.send_status, "not_queued")
|
||||
|
||||
def test_partial_smtp_recipient_refusal_is_recorded_without_retrying_accepted_delivery(self) -> None:
|
||||
headers, _ = self._login()
|
||||
from govoplan_mail.backend.dev.mock_mailbox import set_failures
|
||||
@@ -4349,7 +4352,8 @@ class ApiSmokeTests(unittest.TestCase):
|
||||
self.assertEqual(sent.status_code, 200, sent.text)
|
||||
result = sent.json()["result"]
|
||||
self.assertEqual(result["sent_count"], 1, sent.text)
|
||||
self.assertIn("refused recipients", result["results"][0]["message"])
|
||||
self.assertEqual(result["results"][0]["status"], "smtp_accepted")
|
||||
self.assertNotIn("message", result["results"][0])
|
||||
finally:
|
||||
set_failures(smtp_reject_recipients_containing=None)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user