54 lines
1.9 KiB
Python
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)
|