[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