simplifications and refactorings

This commit is contained in:
2026-05-04 16:59:06 +02:00
parent e14cb8a654
commit 4cdb4b144c
18 changed files with 30 additions and 456 deletions
+4 -66
View File
@@ -12,7 +12,6 @@ from media_library_viewer_api.services.mailer import (
describe_smtp_error,
html_to_text,
send_email_message,
test_smtp_connection as smtp_connection_probe,
)
@@ -41,7 +40,7 @@ class MailerTests(unittest.TestCase):
smtp_username="mailer@example.com",
smtp_password="secret",
smtp_from_address="mailer@example.com",
smtp_from_name="Media Library Viewer",
smtp_from_name="Manage",
smtp_use_tls=True,
smtp_use_ssl=False,
smtp_timeout=15,
@@ -67,70 +66,9 @@ class MailerTests(unittest.TestCase):
smtp.send_message.assert_called_once()
message = smtp.send_message.call_args.args[0]
self.assertEqual(message["Subject"], "Hello")
self.assertEqual(message["From"], "Media Library Viewer <mailer@example.com>")
self.assertEqual(message["From"], "Manage <mailer@example.com>")
self.assertEqual(result["recipient_count"], 2)
self.assertEqual(result["attachment_count"], 1)
def test_test_smtp_connection_uses_starttls_and_login(self) -> None:
settings = SimpleNamespace(
smtp_host="smtp.example.com",
smtp_port=587,
smtp_username="mailer@example.com",
smtp_password="secret",
smtp_from_address="alias@example.com",
smtp_from_name="Media Library Viewer",
smtp_use_tls=True,
smtp_use_ssl=False,
smtp_timeout=15,
)
smtp = MagicMock()
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:
result = smtp_connection_probe(settings)
smtp_ssl.assert_not_called()
smtp.ehlo.assert_called()
smtp.starttls.assert_called_once()
smtp.login.assert_called_once_with("mailer@example.com", "secret")
smtp.noop.assert_called_once()
self.assertEqual(result["status"], "ok")
self.assertEqual(result["from_address"], "alias@example.com")
self.assertEqual(result["smtp_host"], "smtp.example.com")
self.assertEqual(result["selected_mode"]["label"], "configured")
def test_test_smtp_connection_falls_back_to_fastmail_mode(self) -> None:
settings = SimpleNamespace(
smtp_host="smtp.fastmail.com",
smtp_port=465,
smtp_username="mailer@example.com",
smtp_password="secret",
smtp_from_address="alias@example.com",
smtp_from_name="Media Library Viewer",
smtp_use_tls=False,
smtp_use_ssl=True,
smtp_timeout=15,
)
smtp_ssl = MagicMock(side_effect=TimeoutError("timed out"))
fallback_smtp = MagicMock()
smtp_factory = MagicMock(return_value=_SMTPContext(fallback_smtp))
with patch("media_library_viewer_api.services.mailer.smtplib.SMTP_SSL", smtp_ssl), patch(
"media_library_viewer_api.services.mailer.smtplib.SMTP",
smtp_factory,
):
result = smtp_connection_probe(settings)
self.assertEqual(result["status"], "ok")
self.assertEqual(result["selected_mode"]["label"], "Fastmail STARTTLS 587")
self.assertEqual(len(result["attempts"]), 2)
self.assertEqual(result["attempts"][0]["status"], "failed")
self.assertEqual(result["attempts"][1]["status"], "ok")
fallback_smtp.starttls.assert_called_once()
fallback_smtp.login.assert_called_once_with("mailer@example.com", "secret")
def test_send_email_message_falls_back_to_fastmail_mode(self) -> None:
settings = SimpleNamespace(
smtp_host="smtp.fastmail.com",
@@ -138,7 +76,7 @@ class MailerTests(unittest.TestCase):
smtp_username="mailer@example.com",
smtp_password="secret",
smtp_from_address="alias@example.com",
smtp_from_name="Media Library Viewer",
smtp_from_name="Manage",
smtp_use_tls=False,
smtp_use_ssl=True,
smtp_timeout=15,
@@ -172,7 +110,7 @@ class MailerTests(unittest.TestCase):
smtp_username="mailer@example.com",
smtp_password="secret",
smtp_from_address="alias@example.com",
smtp_from_name="Media Library Viewer",
smtp_from_name="Manage",
smtp_use_tls=True,
smtp_use_ssl=False,
smtp_timeout=15,