Send branded HTML emails and harden SMTP2GO webhooks.
Fix campaign stuck on sending under async queue, and stop UUID ValidationError when SMTP2GO tests send "Headers Unavailable".
This commit is contained in:
@@ -271,6 +271,8 @@ class CampaignSendTests(TestCase):
|
||||
self.assertEqual(len(mail.outbox), 1)
|
||||
self.assertEqual(mail.outbox[0].to, ["me@example.com"])
|
||||
self.assertTrue(mail.outbox[0].subject.startswith("[TEST]"))
|
||||
self.assertTrue(mail.outbox[0].alternatives)
|
||||
self.assertEqual(mail.outbox[0].alternatives[0][1], "text/html")
|
||||
# Recipients untouched
|
||||
self.assertEqual(
|
||||
self.campaign.messages.filter(status=Message.Status.DRAFT).count(), 1
|
||||
@@ -300,6 +302,10 @@ class CampaignSendTests(TestCase):
|
||||
summary = mail.outbox[1]
|
||||
self.assertIn("Campaign sent:", summary.subject)
|
||||
self.assertEqual(summary.to, [self.user.email])
|
||||
self.assertTrue(mail.outbox[0].alternatives)
|
||||
self.assertEqual(mail.outbox[0].alternatives[0][1], "text/html")
|
||||
self.assertIn("#00626c", mail.outbox[0].alternatives[0][0])
|
||||
self.assertTrue(summary.alternatives)
|
||||
|
||||
|
||||
class Smtp2goEmailWebhookTests(TestCase):
|
||||
@@ -443,6 +449,50 @@ class Smtp2goEmailWebhookTests(TestCase):
|
||||
)
|
||||
self.assertEqual(ok.status_code, 200)
|
||||
|
||||
def test_invalid_monica_header_does_not_500(self):
|
||||
"""SMTP2GO tests often send a non-UUID sample custom header."""
|
||||
import json
|
||||
|
||||
url = reverse("messaging:email_webhook")
|
||||
response = self.client.post(
|
||||
url,
|
||||
data=json.dumps(
|
||||
{
|
||||
"event": "delivered",
|
||||
"rcpt": "nobody@example.com",
|
||||
"X-Monica-Message-Id": "Headers Unavailable",
|
||||
"email_id": "smtp2go-test-id",
|
||||
}
|
||||
),
|
||||
content_type="application/json",
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
data = response.json()
|
||||
self.assertTrue(data["ok"])
|
||||
self.assertFalse(data["matched"])
|
||||
self.assertTrue(
|
||||
ProviderEvent.objects.filter(event_type="delivered").exists()
|
||||
)
|
||||
|
||||
def test_ui_event_label_aliases(self):
|
||||
url = reverse("messaging:email_webhook")
|
||||
response = self.client.post(
|
||||
url,
|
||||
data={
|
||||
"event": "bounced",
|
||||
"bounce": "soft",
|
||||
"X-Monica-Message-Id": str(self.message.pk),
|
||||
},
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.message.refresh_from_db()
|
||||
self.assertEqual(self.message.status, Message.Status.BOUNCED)
|
||||
self.assertTrue(
|
||||
ProviderEvent.objects.filter(
|
||||
message=self.message, event_type="bounce"
|
||||
).exists()
|
||||
)
|
||||
|
||||
|
||||
class Smtp2goSmsWebhookTests(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user