class EmailBackendTests(SimpleTestCase):
    def setUp(self):
        self.user = get_user_model().objects.create(
            username='******',
            email='*****@*****.**',
        )
        self.code = LoginCode.create_code_for_user(self.user, next='/secrets/')
        self.backend = EmailBackend()

    def tearDown(self):
        self.user.delete()

    def test_email_backend(self):
        "Send email via EmailBackend with default options"
        mail.outbox = []
        self.backend.send_login_code(self.code)
        self.assertEqual(1, len(mail.outbox))
        message = mail.outbox[0]
        http_url = self.code.login_url()
        self.assertIn(http_url, message.body)
        self.assertTrue(http_url.startswith('http:'))
        self.assertEqual([self.user.email], message.to)

    def test_email_backend_with_https(self):
        "Send email via EmailBackend with secure=True"
        mail.outbox = []
        self.backend.send_login_code(self.code, secure=True, host='secure.example.com')
        self.assertEqual(1, len(mail.outbox))
        message = mail.outbox[0]
        https_url = self.code.login_url(secure=True, host='secure.example.com')
        self.assertTrue(https_url.startswith('https:'))
        self.assertIn(https_url, message.body)
 def setUp(self):
     self.user = get_user_model().objects.create(
         username='******',
         email='*****@*****.**',
     )
     self.code = LoginCode.create_code_for_user(self.user, next='/secrets/')
     self.backend = EmailBackend()
Example #3
0
class EmailBackendTests(TestCase):
    def setUp(self):
        self.user = get_user_model().objects.create(
            username='******',
            email='*****@*****.**',
        )
        self.code = LoginCode.create_code_for_user(self.user, next='/secrets/')
        self.backend = EmailBackend()

    def test_email_backend(self):
        "Send email via EmailBackend with default options"
        self.backend.send_login_code(self.code, {'url': 'https://example.com'})
        self.assertEqual(1, len(mail.outbox))
        message = mail.outbox[0]
        self.assertIn('https://example.com', message.body)
        self.assertEqual([self.user.email], message.to)
        self.assertEqual(0, len(message.alternatives))

    def test_html_template_name(self):
        # We don't have an existing html template, so we just use the txt template
        self.backend.html_template_name = 'registration/login_email.txt'
        self.backend.send_login_code(self.code, {'url': 'https://example.com'})
        self.assertEqual(1, len(mail.outbox))
        message = mail.outbox[0]
        self.assertIn('https://example.com', message.body)
        self.assertEqual(1, len(message.alternatives))
        self.assertIn('https://example.com', message.alternatives[0][0])