1. from django.core import mail
    
  2. from django.core.management import call_command
    
  3. from django.test import SimpleTestCase, override_settings
    
  4. 
    
  5. 
    
  6. @override_settings(
    
  7.     ADMINS=(
    
  8.         ("Admin", "[email protected]"),
    
  9.         ("Admin and Manager", "[email protected]"),
    
  10.     ),
    
  11.     MANAGERS=(
    
  12.         ("Manager", "[email protected]"),
    
  13.         ("Admin and Manager", "[email protected]"),
    
  14.     ),
    
  15. )
    
  16. class SendTestEmailManagementCommand(SimpleTestCase):
    
  17.     """
    
  18.     Test the sending of a test email using the `sendtestemail` command.
    
  19.     """
    
  20. 
    
  21.     def test_single_receiver(self):
    
  22.         """
    
  23.         The mail is sent with the correct subject and recipient.
    
  24.         """
    
  25.         recipient = "[email protected]"
    
  26.         call_command("sendtestemail", recipient)
    
  27.         self.assertEqual(len(mail.outbox), 1)
    
  28.         mail_message = mail.outbox[0]
    
  29.         self.assertEqual(mail_message.subject[0:15], "Test email from")
    
  30.         self.assertEqual(mail_message.recipients(), [recipient])
    
  31. 
    
  32.     def test_multiple_receivers(self):
    
  33.         """
    
  34.         The mail may be sent with multiple recipients.
    
  35.         """
    
  36.         recipients = ["[email protected]", "[email protected]"]
    
  37.         call_command("sendtestemail", recipients[0], recipients[1])
    
  38.         self.assertEqual(len(mail.outbox), 1)
    
  39.         mail_message = mail.outbox[0]
    
  40.         self.assertEqual(mail_message.subject[0:15], "Test email from")
    
  41.         self.assertEqual(
    
  42.             sorted(mail_message.recipients()),
    
  43.             [
    
  44.                 "[email protected]",
    
  45.                 "[email protected]",
    
  46.             ],
    
  47.         )
    
  48. 
    
  49.     def test_manager_receivers(self):
    
  50.         """
    
  51.         The mail should be sent to the email addresses specified in
    
  52.         settings.MANAGERS.
    
  53.         """
    
  54.         call_command("sendtestemail", "--managers")
    
  55.         self.assertEqual(len(mail.outbox), 1)
    
  56.         mail_message = mail.outbox[0]
    
  57.         self.assertEqual(
    
  58.             sorted(mail_message.recipients()),
    
  59.             [
    
  60.                 "[email protected]",
    
  61.                 "[email protected]",
    
  62.             ],
    
  63.         )
    
  64. 
    
  65.     def test_admin_receivers(self):
    
  66.         """
    
  67.         The mail should be sent to the email addresses specified in
    
  68.         settings.ADMIN.
    
  69.         """
    
  70.         call_command("sendtestemail", "--admins")
    
  71.         self.assertEqual(len(mail.outbox), 1)
    
  72.         mail_message = mail.outbox[0]
    
  73.         self.assertEqual(
    
  74.             sorted(mail_message.recipients()),
    
  75.             [
    
  76.                 "[email protected]",
    
  77.                 "[email protected]",
    
  78.             ],
    
  79.         )
    
  80. 
    
  81.     def test_manager_and_admin_receivers(self):
    
  82.         """
    
  83.         The mail should be sent to the email addresses specified in both
    
  84.         settings.MANAGERS and settings.ADMINS.
    
  85.         """
    
  86.         call_command("sendtestemail", "--managers", "--admins")
    
  87.         self.assertEqual(len(mail.outbox), 2)
    
  88.         manager_mail = mail.outbox[0]
    
  89.         self.assertEqual(
    
  90.             sorted(manager_mail.recipients()),
    
  91.             [
    
  92.                 "[email protected]",
    
  93.                 "[email protected]",
    
  94.             ],
    
  95.         )
    
  96.         admin_mail = mail.outbox[1]
    
  97.         self.assertEqual(
    
  98.             sorted(admin_mail.recipients()),
    
  99.             [
    
  100.                 "[email protected]",
    
  101.                 "[email protected]",
    
  102.             ],
    
  103.         )