[PATCH 3 of 6] e-mail: revive dead code that checks for unspecified recipients

Thomas De Schampheleire patrickdepinguin at gmail.com
Sun Aug 2 20:51:37 UTC 2015


# HG changeset patch
# User Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>
# Date 1438543034 -7200
#      Sun Aug 02 21:17:14 2015 +0200
# Node ID 8929f6591543076d718674a621feac1060a1a7e7
# Parent  b23eae36b776a9bf8ce3c06a18e0189d337f7502
e-mail: revive dead code that checks for unspecified recipients

Commit 609e06b6c52f6a8ea9581372805c4bbb60db81a1 introduced dead code:
in the beginning of send_email an assert verifies that recipients is of type
'list', so checking it for None later is useless and that branch can never
be reached.

Instead of removing the dead code, revive it and add a test case.

diff --git a/kallithea/lib/celerylib/tasks.py b/kallithea/lib/celerylib/tasks.py
--- a/kallithea/lib/celerylib/tasks.py
+++ b/kallithea/lib/celerylib/tasks.py
@@ -264,15 +264,14 @@ def send_email(recipients, subject, body
     email_prefix = email_config.get('email_prefix', '')
     if email_prefix:
         subject = "%s %s" % (email_prefix, subject)
-    if recipients is None:
+
+    if not recipients:
         # if recipients are not defined we send to email_config + all admins
         admins = [u.email for u in User.query()
                   .filter(User.admin == True).all()]
         recipients = [email_config.get('email_to')] + admins
-        log.warning("recipients not specified for '%s' - sending to admins %s", subject, ' '.join(recipients))
-    elif not recipients:
-        log.error("No recipients specified")
-        return False
+
+        log.warning("No recipients specified for '%s' - sending to admins %s", subject, ' '.join(recipients))
 
     mail_from = email_config.get('app_email_from', 'Kallithea')
     user = email_config.get('smtp_username')
diff --git a/kallithea/tests/other/test_mail.py b/kallithea/tests/other/test_mail.py
--- a/kallithea/tests/other/test_mail.py
+++ b/kallithea/tests/other/test_mail.py
@@ -44,3 +44,27 @@ class TestMail(BaseTestCase):
         self.assertIn('Subject: %s' % subject, smtplib_mock.lastmsg)
         self.assertIn(body, smtplib_mock.lastmsg)
         self.assertIn(html_body, smtplib_mock.lastmsg)
+
+    def test_send_mail_no_recipients(self):
+        mailserver = 'smtp.mailserver.org'
+        recipients = []
+        envelope_from = 'noreply at mailserver.org'
+        email_to = 'admin at mailserver.org'
+        subject = 'subject'
+        body = 'body'
+        html_body = 'html_body'
+
+        config_mock = {
+                'smtp_server': mailserver,
+                'app_email_from': envelope_from,
+                'email_to': email_to,
+        }
+        with mock.patch('kallithea.lib.celerylib.tasks.config', config_mock):
+            kallithea.lib.celerylib.tasks.send_email(recipients, subject, body, html_body)
+
+        self.assertSetEqual(smtplib_mock.lastdest, set([TEST_USER_ADMIN_EMAIL, email_to]))
+        self.assertEqual(smtplib_mock.lastsender, envelope_from)
+        self.assertIn('From: %s' % envelope_from, smtplib_mock.lastmsg)
+        self.assertIn('Subject: %s' % subject, smtplib_mock.lastmsg)
+        self.assertIn(body, smtplib_mock.lastmsg)
+        self.assertIn(html_body, smtplib_mock.lastmsg)


More information about the kallithea-general mailing list