authentik.stages.email.tests.test_tasks
Test email stage tasks
1"""Test email stage tasks""" 2 3from unittest.mock import PropertyMock, patch 4 5from django.core import mail 6from django.core.mail import EmailMultiAlternatives 7from django.core.mail.backends.locmem import EmailBackend 8from django.test import TestCase 9 10from authentik.core.tests.utils import create_test_admin_user 11from authentik.stages.authenticator_email.models import AuthenticatorEmailStage 12from authentik.stages.email.models import EmailStage 13from authentik.stages.email.tasks import get_email_body, send_mails 14 15 16class TestEmailTasks(TestCase): 17 """Test email stage tasks""" 18 19 def setUp(self): 20 self.user = create_test_admin_user() 21 self.stage = EmailStage.objects.create( 22 name="test-email", 23 use_global_settings=True, 24 ) 25 self.auth_stage = AuthenticatorEmailStage.objects.create( 26 name="test-auth-email", 27 use_global_settings=True, 28 ) 29 30 def test_get_email_body_html(self): 31 """Test get_email_body with HTML alternative""" 32 message = EmailMultiAlternatives() 33 message.body = "plain text" 34 message.attach_alternative("<p>html content</p>", "text/html") 35 self.assertEqual(get_email_body(message), "<p>html content</p>") 36 37 def test_get_email_body_plain(self): 38 """Test get_email_body with plain text only""" 39 message = EmailMultiAlternatives() 40 message.body = "plain text" 41 self.assertEqual(get_email_body(message), "plain text") 42 43 @patch( 44 "authentik.stages.email.models.EmailStage.backend_class", 45 PropertyMock(return_value=EmailBackend), 46 ) 47 def test_send_mails_email_stage(self): 48 """Test send_mails with EmailStage""" 49 message = EmailMultiAlternatives() 50 send_mails(self.stage, message) 51 self.assertEqual(len(mail.outbox), 1) 52 53 @patch( 54 "authentik.stages.authenticator_email.models.AuthenticatorEmailStage.backend_class", 55 PropertyMock(return_value=EmailBackend), 56 ) 57 def test_send_mails_authenticator_stage(self): 58 """Test send_mails with AuthenticatorEmailStage""" 59 message = EmailMultiAlternatives() 60 send_mails(self.auth_stage, message) 61 self.assertEqual(len(mail.outbox), 1)
class
TestEmailTasks(django.test.testcases.TestCase):
17class TestEmailTasks(TestCase): 18 """Test email stage tasks""" 19 20 def setUp(self): 21 self.user = create_test_admin_user() 22 self.stage = EmailStage.objects.create( 23 name="test-email", 24 use_global_settings=True, 25 ) 26 self.auth_stage = AuthenticatorEmailStage.objects.create( 27 name="test-auth-email", 28 use_global_settings=True, 29 ) 30 31 def test_get_email_body_html(self): 32 """Test get_email_body with HTML alternative""" 33 message = EmailMultiAlternatives() 34 message.body = "plain text" 35 message.attach_alternative("<p>html content</p>", "text/html") 36 self.assertEqual(get_email_body(message), "<p>html content</p>") 37 38 def test_get_email_body_plain(self): 39 """Test get_email_body with plain text only""" 40 message = EmailMultiAlternatives() 41 message.body = "plain text" 42 self.assertEqual(get_email_body(message), "plain text") 43 44 @patch( 45 "authentik.stages.email.models.EmailStage.backend_class", 46 PropertyMock(return_value=EmailBackend), 47 ) 48 def test_send_mails_email_stage(self): 49 """Test send_mails with EmailStage""" 50 message = EmailMultiAlternatives() 51 send_mails(self.stage, message) 52 self.assertEqual(len(mail.outbox), 1) 53 54 @patch( 55 "authentik.stages.authenticator_email.models.AuthenticatorEmailStage.backend_class", 56 PropertyMock(return_value=EmailBackend), 57 ) 58 def test_send_mails_authenticator_stage(self): 59 """Test send_mails with AuthenticatorEmailStage""" 60 message = EmailMultiAlternatives() 61 send_mails(self.auth_stage, message) 62 self.assertEqual(len(mail.outbox), 1)
Test email stage tasks
def
setUp(self):
20 def setUp(self): 21 self.user = create_test_admin_user() 22 self.stage = EmailStage.objects.create( 23 name="test-email", 24 use_global_settings=True, 25 ) 26 self.auth_stage = AuthenticatorEmailStage.objects.create( 27 name="test-auth-email", 28 use_global_settings=True, 29 )
Hook method for setting up the test fixture before exercising it.
def
test_get_email_body_html(self):
31 def test_get_email_body_html(self): 32 """Test get_email_body with HTML alternative""" 33 message = EmailMultiAlternatives() 34 message.body = "plain text" 35 message.attach_alternative("<p>html content</p>", "text/html") 36 self.assertEqual(get_email_body(message), "<p>html content</p>")
Test get_email_body with HTML alternative
def
test_get_email_body_plain(self):
38 def test_get_email_body_plain(self): 39 """Test get_email_body with plain text only""" 40 message = EmailMultiAlternatives() 41 message.body = "plain text" 42 self.assertEqual(get_email_body(message), "plain text")
Test get_email_body with plain text only
@patch('authentik.stages.email.models.EmailStage.backend_class', PropertyMock(return_value=EmailBackend))
def
test_send_mails_email_stage(self):
44 @patch( 45 "authentik.stages.email.models.EmailStage.backend_class", 46 PropertyMock(return_value=EmailBackend), 47 ) 48 def test_send_mails_email_stage(self): 49 """Test send_mails with EmailStage""" 50 message = EmailMultiAlternatives() 51 send_mails(self.stage, message) 52 self.assertEqual(len(mail.outbox), 1)
Test send_mails with EmailStage
@patch('authentik.stages.authenticator_email.models.AuthenticatorEmailStage.backend_class', PropertyMock(return_value=EmailBackend))
def
test_send_mails_authenticator_stage(self):
54 @patch( 55 "authentik.stages.authenticator_email.models.AuthenticatorEmailStage.backend_class", 56 PropertyMock(return_value=EmailBackend), 57 ) 58 def test_send_mails_authenticator_stage(self): 59 """Test send_mails with AuthenticatorEmailStage""" 60 message = EmailMultiAlternatives() 61 send_mails(self.auth_stage, message) 62 self.assertEqual(len(mail.outbox), 1)
Test send_mails with AuthenticatorEmailStage