redesign
This commit is contained in:
@@ -103,7 +103,7 @@ class MailerTests(unittest.TestCase):
|
||||
self.assertEqual(result["attempts"][1]["status"], "ok")
|
||||
fallback_smtp.send_message.assert_called_once()
|
||||
|
||||
def test_send_email_message_rejects_unauthorized_from_address(self) -> None:
|
||||
def test_send_email_message_retries_with_smtp_username_when_from_is_rejected(self) -> None:
|
||||
settings = SimpleNamespace(
|
||||
smtp_host="smtp.example.com",
|
||||
smtp_port=587,
|
||||
@@ -116,25 +116,30 @@ class MailerTests(unittest.TestCase):
|
||||
smtp_timeout=15,
|
||||
)
|
||||
smtp = MagicMock()
|
||||
smtp.send_message.side_effect = smtplib.SMTPDataError(
|
||||
551, b"5.7.1 Not authorised to send from this header address"
|
||||
)
|
||||
smtp.send_message.side_effect = [
|
||||
smtplib.SMTPDataError(551, b"5.7.1 Not authorised to send from this header address"),
|
||||
{},
|
||||
]
|
||||
smtp_factory = MagicMock(return_value=_SMTPContext(smtp))
|
||||
|
||||
with patch("media_library_viewer_api.services.mailer.smtplib.SMTP", smtp_factory), patch(
|
||||
"media_library_viewer_api.services.mailer.smtplib.SMTP_SSL"
|
||||
) as smtp_ssl:
|
||||
with self.assertRaises(RuntimeError) as ctx:
|
||||
send_email_message(
|
||||
settings,
|
||||
recipients=["alex@example.com"],
|
||||
subject="Hello",
|
||||
html_body="<p>Hello</p>",
|
||||
)
|
||||
result = send_email_message(
|
||||
settings,
|
||||
recipients=["alex@example.com"],
|
||||
subject="Hello",
|
||||
html_body="<p>Hello</p>",
|
||||
)
|
||||
|
||||
smtp_ssl.assert_not_called()
|
||||
self.assertIn("authorized alias", str(ctx.exception).lower())
|
||||
self.assertEqual(smtp.send_message.call_count, 1)
|
||||
self.assertEqual(result["from_address"], "mailer@example.com")
|
||||
self.assertEqual(smtp.send_message.call_count, 2)
|
||||
first_message = smtp.send_message.call_args_list[0].args[0]
|
||||
second_message = smtp.send_message.call_args_list[1].args[0]
|
||||
self.assertEqual(first_message["From"], "Manage <alias@example.com>")
|
||||
self.assertEqual(second_message["From"], "Manage <mailer@example.com>")
|
||||
self.assertEqual(second_message["Reply-To"], "alias@example.com")
|
||||
|
||||
def test_describe_smtp_error_handles_timeout(self) -> None:
|
||||
detail = describe_smtp_error(TimeoutError("timed out"))
|
||||
|
||||
Reference in New Issue
Block a user