Address PR feedback
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
"""
|
||||
Receivers of signals sent from django-user-tasks
|
||||
"""
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import logging
|
||||
from urlparse import urljoin
|
||||
from six.moves.urllib.parse import urljoin
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.dispatch import receiver
|
||||
@@ -11,6 +13,8 @@ from user_tasks.signals import user_task_stopped
|
||||
|
||||
from .tasks import send_task_complete_email
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@receiver(user_task_stopped, dispatch_uid="cms_user_task_stopped")
|
||||
def user_task_stopped_handler(sender, **kwargs): # pylint: disable=unused-argument
|
||||
@@ -47,4 +51,4 @@ def user_task_stopped_handler(sender, **kwargs): # pylint: disable=unused-argum
|
||||
# Need to str state_text here because it is a proxy object and won't serialize correctly
|
||||
send_task_complete_email.delay(status.name.lower(), str(status.state_text), status.user.email, detail_url)
|
||||
except Exception: # pylint: disable=broad-except
|
||||
logging.exception("Unable to queue send_task_complete_email")
|
||||
LOGGER.exception("Unable to queue send_task_complete_email")
|
||||
|
||||
@@ -4,7 +4,9 @@ Unit tests for integration of the django-user-tasks app and its REST API.
|
||||
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import sys
|
||||
from uuid import uuid4
|
||||
import logging
|
||||
|
||||
import mock
|
||||
from boto.exception import NoAuthHandlerFound
|
||||
@@ -21,6 +23,24 @@ from user_tasks.serializers import ArtifactSerializer, StatusSerializer
|
||||
from .signals import user_task_stopped
|
||||
|
||||
|
||||
# Mock logging handler to check for expected logs.
|
||||
class MockLoggingHandler(logging.Handler):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.reset()
|
||||
logging.Handler.__init__(self, *args, **kwargs)
|
||||
|
||||
def emit(self, record):
|
||||
self.messages[record.levelname.lower()].append(record.getMessage())
|
||||
|
||||
def reset(self):
|
||||
self.messages = {
|
||||
'debug': [],
|
||||
'info': [],
|
||||
'warning': [],
|
||||
'error': [],
|
||||
'critical': [],
|
||||
}
|
||||
|
||||
# Helper functions for stuff that pylint complains about without disable comments
|
||||
|
||||
def _context(response):
|
||||
@@ -199,3 +219,14 @@ class TestUserTaskStopped(APITestCase):
|
||||
with mock.patch('cms_user_tasks.tasks.send_task_complete_email.retry') as mock_retry:
|
||||
user_task_stopped.send(sender=UserTaskStatus, status=self.status)
|
||||
self.assertTrue(mock_retry.called)
|
||||
|
||||
def test_queue_email_failure(self):
|
||||
logger = logging.getLogger("cms_user_tasks.signals")
|
||||
hdlr = MockLoggingHandler(level="DEBUG")
|
||||
logger.addHandler(hdlr)
|
||||
|
||||
with mock.patch('cms_user_tasks.tasks.send_task_complete_email.delay') as mock_delay:
|
||||
mock_delay.side_effect = NoAuthHandlerFound()
|
||||
user_task_stopped.send(sender=UserTaskStatus, status=self.status)
|
||||
self.assertTrue(mock_delay.called)
|
||||
self.assertEqual(hdlr.messages['error'][0], u'Unable to queue send_task_complete_email')
|
||||
|
||||
Reference in New Issue
Block a user