From 6fc1487e6aca58a48732b954bdb1f4174a25be68 Mon Sep 17 00:00:00 2001 From: Gagan Deep Date: Mon, 16 Nov 2020 12:48:44 +0530 Subject: [PATCH] Fixes #1603 - Adds test for tcms.core.utils.maito --- tcms/core/tests/test_utils.py | 86 +++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 tcms/core/tests/test_utils.py diff --git a/tcms/core/tests/test_utils.py b/tcms/core/tests/test_utils.py new file mode 100644 index 0000000000..580ce5aee2 --- /dev/null +++ b/tcms/core/tests/test_utils.py @@ -0,0 +1,86 @@ +import unittest + +from django.conf import settings +from django.core.mail import send_mail +from django.template.loader import render_to_string +from unittest.mock import patch + +from tcms.core.utils.mailto import mailto + + +class TestMailTo(unittest.TestCase): + @classmethod + def setUp(self): + self.subject = 'Test Subject' + self.body = 'Body text' + self.sender = 'kiwi@example.com' + self.recipients = None + + @property + def test_kwargs(self): + return { + 'target': send_mail, + 'args': (settings.EMAIL_SUBJECT_PREFIX + self.subject, + self.body, + self.sender, + self.recipients), + 'kwargs': { + 'fail_silently': False + } + } + + @patch('threading.Thread') + def test_string_recipient(self, mock): + self.recipients = ['example@example.com'] + mailto(template_name=None, + subject=self.subject, + recipients='example@example.com', + context=self.body) + mock.assert_called_once_with(**self.test_kwargs) + + @patch('threading.Thread') + def test_duplicate_recipients(self, mock): + self.recipients = ['example@example.com'] + mailto(template_name=None, + subject=self.subject, + recipients=self.recipients * 4, + context=self.body) + mock.assert_called_once_with(**self.test_kwargs) + + @patch('threading.Thread') + def test_cc_email(self, mock): + self.recipients = ['example@example.com', 'cc@example.com'] + mailto(template_name=None, + subject=self.subject, + recipients='example@example.com', + context=self.body, + cc=['cc@example.com']) + mock.assert_called_once_with(**self.test_kwargs) + + + @patch('django.conf.settings.DEBUG', True) + @patch('django.conf.settings.ADMINS', [('Admin', 'admin@example.com')]) + @patch('threading.Thread') + def test_admin_email_on_debug(self, mock): + self.recipients = ['example@example.com', 'admin@example.com'] + mailto(template_name=None, + subject=self.subject, + recipients='example@example.com', + context=self.body) + mock.assert_called_once_with(**self.test_kwargs) + + @patch('threading.Thread') + def test_template(self, mock): + template_name = 'email/user_registered/notify_admins.txt' + context = { + 'username': 'username', + 'user_url': 'https://example.com/username/', + } + self.body = render_to_string(template_name, context) + self.recipients = ['example@example.com'] + mailto(template_name=template_name, + subject=self.subject, + recipients=self.recipients, + context=context) + mock.assert_called_once_with(**self.test_kwargs) +