Files
edx-platform/common/djangoapps/student/tests/test_tasks.py
2017-05-30 16:04:54 -04:00

54 lines
1.9 KiB
Python

"""
Tests for the Sending activation email celery tasks
"""
import mock
from boto.exception import NoAuthHandlerFound
from django.conf import settings
from django.test import TestCase
from lms.djangoapps.courseware.tests.factories import UserFactory
from student.tasks import send_activation_email
class SendActivationEmailTestCase(TestCase):
"""
Test for send activation email to user
"""
def setUp(self):
""" Setup components used by each test."""
super(SendActivationEmailTestCase, self).setUp()
self.student = UserFactory()
@mock.patch('time.sleep', mock.Mock(return_value=None))
@mock.patch('student.tasks.log')
@mock.patch('django.core.mail.send_mail', mock.Mock(side_effect=NoAuthHandlerFound))
def test_send_email(self, mock_log):
"""
Tests retries when the activation email doesn't send
"""
from_address = 'task_testing@example.com'
email_max_attempts = settings.RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS
# pylint: disable=no-member
send_activation_email.delay('Task_test', 'Task_test_message', from_address, self.student.email)
# Asserts sending email retry logging.
for attempt in range(email_max_attempts):
mock_log.info.assert_any_call(
'Retrying sending email to user {dest_addr}, attempt # {attempt} of {max_attempts}'.format(
dest_addr=self.student.email,
attempt=attempt,
max_attempts=email_max_attempts
))
self.assertEquals(mock_log.info.call_count, 6)
# Asserts that the error was logged on crossing max retry attempts.
mock_log.error.assert_called_with(
'Unable to send activation email to user from "%s" to "%s"',
from_address,
self.student.email,
exc_info=True
)
self.assertEquals(mock_log.error.call_count, 1)