From cd8c2b876044d2afae4920fed3f97a26d919141a Mon Sep 17 00:00:00 2001 From: Sameer Al-Sakran Date: Fri, 11 Apr 2014 13:15:09 -0700 Subject: [PATCH 1/3] add subaccount support to djrill --- djrill/mail/backends/djrill.py | 6 ++++ djrill/tests/__init__.py | 1 + djrill/tests/test_mandrill_subaccounts.py | 38 +++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 djrill/tests/test_mandrill_subaccounts.py diff --git a/djrill/mail/backends/djrill.py b/djrill/mail/backends/djrill.py index a75c2bf..e20756c 100644 --- a/djrill/mail/backends/djrill.py +++ b/djrill/mail/backends/djrill.py @@ -49,6 +49,8 @@ class DjrillBackend(BaseEmailBackend): super(DjrillBackend, self).__init__(**kwargs) self.api_key = getattr(settings, "MANDRILL_API_KEY", None) self.api_url = MANDRILL_API_URL + + self.subaccount = getattr(settings, "MANDRILL_SUB_ACCOUNT", None) if not self.api_key: raise ImproperlyConfigured("You have not set your mandrill api key " @@ -187,6 +189,10 @@ class DjrillBackend(BaseEmailBackend): 'tags', 'preserve_recipients', 'view_content_link', 'subaccount', 'google_analytics_domains', 'google_analytics_campaign', 'metadata'] + + if self.subaccount: + msg_dict['subaccount'] = self.subaccount + for attr in mandrill_attrs: if hasattr(message, attr): msg_dict[attr] = getattr(message, attr) diff --git a/djrill/tests/__init__.py b/djrill/tests/__init__.py index b663f5b..f0af178 100644 --- a/djrill/tests/__init__.py +++ b/djrill/tests/__init__.py @@ -3,3 +3,4 @@ from djrill.tests.test_legacy import * from djrill.tests.test_mandrill_send import * from djrill.tests.test_mandrill_send_template import * from djrill.tests.test_mandrill_webhook import * +from djrill.tests.test_mandrill_subaccounts import * diff --git a/djrill/tests/test_mandrill_subaccounts.py b/djrill/tests/test_mandrill_subaccounts.py new file mode 100644 index 0000000..bfd647d --- /dev/null +++ b/djrill/tests/test_mandrill_subaccounts.py @@ -0,0 +1,38 @@ +from django.core import mail + +from djrill.tests.mock_backend import DjrillBackendMockAPITestCase + +from django.conf import settings + +class DjrillMandrillSubaccountTests(DjrillBackendMockAPITestCase): + """Test Djrill backend support for Mandrill subaccounts""" + + def test_send_basic(self): + mail.send_mail('Subject here', 'Here is the message.', + 'from@example.com', ['to@example.com'], fail_silently=False) + self.assert_mandrill_called("/messages/send.json") + data = self.get_api_call_data() + self.assertEqual(data['message']['subject'], "Subject here") + self.assertEqual(data['message']['text'], "Here is the message.") + self.assertFalse('from_name' in data['message']) + self.assertEqual(data['message']['from_email'], "from@example.com") + self.assertEqual(len(data['message']['to']), 1) + self.assertEqual(data['message']['to'][0]['email'], "to@example.com") + + + def test_send_from_subaccount(self): + settings.MANDRILL_SUB_ACCOUNT = "test_subaccount" + + mail.send_mail('Subject here', 'Here is the message.', + 'from@example.com', ['to@example.com'], fail_silently=False) + self.assert_mandrill_called("/messages/send.json") + data = self.get_api_call_data() + self.assertEqual(data['message']['subject'], "Subject here") + self.assertEqual(data['message']['text'], "Here is the message.") + self.assertFalse('from_name' in data['message']) + self.assertEqual(data['message']['from_email'], "from@example.com") + self.assertEqual(len(data['message']['to']), 1) + self.assertEqual(data['message']['to'][0]['email'], "to@example.com") + + + self.assertEqual(data['message']['subaccount'], settings.MANDRILL_SUB_ACCOUNT) From 21e8727b1d01ce47c50fc4b00924256e318c6777 Mon Sep 17 00:00:00 2001 From: Michael Hobbs Date: Fri, 11 Apr 2014 14:24:31 -0700 Subject: [PATCH 2/3] use MANDRILL_SUBACCOUNT to match the API field --- djrill/mail/backends/djrill.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/djrill/mail/backends/djrill.py b/djrill/mail/backends/djrill.py index e20756c..18ee6a8 100644 --- a/djrill/mail/backends/djrill.py +++ b/djrill/mail/backends/djrill.py @@ -49,8 +49,8 @@ class DjrillBackend(BaseEmailBackend): super(DjrillBackend, self).__init__(**kwargs) self.api_key = getattr(settings, "MANDRILL_API_KEY", None) self.api_url = MANDRILL_API_URL - - self.subaccount = getattr(settings, "MANDRILL_SUB_ACCOUNT", None) + + self.subaccount = getattr(settings, "MANDRILL_SUBACCOUNT", None) if not self.api_key: raise ImproperlyConfigured("You have not set your mandrill api key " From 3c7a69873ff277b1d7fb662867b2b9218628dd5b Mon Sep 17 00:00:00 2001 From: Sameer Al-Sakran Date: Mon, 14 Apr 2014 11:45:24 -0700 Subject: [PATCH 3/3] fix tests + add base send test --- djrill/tests/test_mandrill_subaccounts.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/djrill/tests/test_mandrill_subaccounts.py b/djrill/tests/test_mandrill_subaccounts.py index bfd647d..d8c137e 100644 --- a/djrill/tests/test_mandrill_subaccounts.py +++ b/djrill/tests/test_mandrill_subaccounts.py @@ -18,10 +18,10 @@ class DjrillMandrillSubaccountTests(DjrillBackendMockAPITestCase): self.assertEqual(data['message']['from_email'], "from@example.com") self.assertEqual(len(data['message']['to']), 1) self.assertEqual(data['message']['to'][0]['email'], "to@example.com") - + self.assertFalse('subaccount' in data['message']) def test_send_from_subaccount(self): - settings.MANDRILL_SUB_ACCOUNT = "test_subaccount" + settings.MANDRILL_SUBACCOUNT = "test_subaccount" mail.send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False) @@ -33,6 +33,4 @@ class DjrillMandrillSubaccountTests(DjrillBackendMockAPITestCase): self.assertEqual(data['message']['from_email'], "from@example.com") self.assertEqual(len(data['message']['to']), 1) self.assertEqual(data['message']['to'][0]['email'], "to@example.com") - - - self.assertEqual(data['message']['subaccount'], settings.MANDRILL_SUB_ACCOUNT) + self.assertEqual(data['message']['subaccount'], settings.MANDRILL_SUBACCOUNT)