test_sendtestemail.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. from django.core import mail
  2. from django.core.management import call_command
  3. from django.test import SimpleTestCase, override_settings
  4. @override_settings(
  5. ADMINS=(('Admin', 'admin@example.com'), ('Admin and Manager', 'admin_and_manager@example.com')),
  6. MANAGERS=(('Manager', 'manager@example.com'), ('Admin and Manager', 'admin_and_manager@example.com')),
  7. )
  8. class SendTestEmailManagementCommand(SimpleTestCase):
  9. """
  10. Test the sending of a test email using the `sendtestemail` command.
  11. """
  12. def test_single_receiver(self):
  13. """
  14. The mail is sent with the correct subject and recipient.
  15. """
  16. recipient = 'joe@example.com'
  17. call_command('sendtestemail', recipient)
  18. self.assertEqual(len(mail.outbox), 1)
  19. mail_message = mail.outbox[0]
  20. self.assertEqual(mail_message.subject[0:15], 'Test email from')
  21. self.assertEqual(mail_message.recipients(), [recipient])
  22. def test_multiple_receivers(self):
  23. """
  24. The mail may be sent with multiple recipients.
  25. """
  26. recipients = ['joe@example.com', 'jane@example.com']
  27. call_command('sendtestemail', recipients[0], recipients[1])
  28. self.assertEqual(len(mail.outbox), 1)
  29. mail_message = mail.outbox[0]
  30. self.assertEqual(mail_message.subject[0:15], 'Test email from')
  31. self.assertEqual(sorted(mail_message.recipients()), [
  32. 'jane@example.com',
  33. 'joe@example.com',
  34. ])
  35. def test_manager_receivers(self):
  36. """
  37. The mail should be sent to the email addresses specified in
  38. settings.MANAGERS.
  39. """
  40. call_command('sendtestemail', '--managers')
  41. self.assertEqual(len(mail.outbox), 1)
  42. mail_message = mail.outbox[0]
  43. self.assertEqual(sorted(mail_message.recipients()), [
  44. 'admin_and_manager@example.com',
  45. 'manager@example.com',
  46. ])
  47. def test_admin_receivers(self):
  48. """
  49. The mail should be sent to the email addresses specified in
  50. settings.ADMIN.
  51. """
  52. call_command('sendtestemail', '--admins')
  53. self.assertEqual(len(mail.outbox), 1)
  54. mail_message = mail.outbox[0]
  55. self.assertEqual(sorted(mail_message.recipients()), [
  56. 'admin@example.com',
  57. 'admin_and_manager@example.com',
  58. ])
  59. def test_manager_and_admin_receivers(self):
  60. """
  61. The mail should be sent to the email addresses specified in both
  62. settings.MANAGERS and settings.ADMINS.
  63. """
  64. call_command('sendtestemail', '--managers', '--admins')
  65. self.assertEqual(len(mail.outbox), 2)
  66. manager_mail = mail.outbox[0]
  67. self.assertEqual(sorted(manager_mail.recipients()), [
  68. 'admin_and_manager@example.com',
  69. 'manager@example.com',
  70. ])
  71. admin_mail = mail.outbox[1]
  72. self.assertEqual(sorted(admin_mail.recipients()), [
  73. 'admin@example.com',
  74. 'admin_and_manager@example.com',
  75. ])