diff --git a/lms/djangoapps/email_marketing/signals.py b/lms/djangoapps/email_marketing/signals.py index af4d0ad7af..27e5fd3eb3 100644 --- a/lms/djangoapps/email_marketing/signals.py +++ b/lms/djangoapps/email_marketing/signals.py @@ -97,6 +97,9 @@ def add_email_marketing_cookies(sender, response=None, user=None, except SailthruClientError as exc: log.error("Exception attempting to obtain cookie from Sailthru: %s", unicode(exc)) return response + except Exception: + log.error("Exception Connecting to celery task for %s", user.email) + return response if not cookie: log.error("No cookie returned attempting to obtain cookie from Sailthru for %s", user.email) diff --git a/lms/djangoapps/email_marketing/tests/test_signals.py b/lms/djangoapps/email_marketing/tests/test_signals.py index ca34b3f4dc..1196a9c793 100644 --- a/lms/djangoapps/email_marketing/tests/test_signals.py +++ b/lms/djangoapps/email_marketing/tests/test_signals.py @@ -195,6 +195,21 @@ class EmailMarketingTests(TestCase): self.assertEquals(userparms['vars']['activated'], 1) self.assertEquals(userparms['lists']['new list'], 1) + @patch('lms.djangoapps.email_marketing.signals.get_email_cookies_via_sailthru.delay') + def test_drop_cookie_task_error(self, mock_email_cookies): + """ + Tests that task error is handled + """ + mock_email_cookies.return_value = {} + mock_email_cookies.get.side_effect = Exception + with LogCapture(LOGGER_NAME, level=logging.INFO) as logger: + add_email_marketing_cookies(None, response=None, user=self.user) + logger.check(( + LOGGER_NAME, 'ERROR', 'Exception Connecting to celery task for {}'.format( + self.user.email + ) + )) + @patch('email_marketing.tasks.log.error') @patch('email_marketing.tasks.SailthruClient.api_post') @patch('email_marketing.tasks.SailthruClient.api_get')