test_mail.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from django.contrib.auth import get_user_model
  2. from django.core import mail
  3. from django.test import TestCase
  4. from django.urls import reverse
  5. from misago.cache.versions import get_cache_versions
  6. from misago.conf.dynamicsettings import DynamicSettings
  7. from misago.core.mail import build_mail, mail_user, mail_users
  8. UserModel = get_user_model()
  9. class MailTests(TestCase):
  10. def test_building_mail_without_context_raises_value_error(self):
  11. user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
  12. with self.assertRaises(ValueError):
  13. build_mail(user, "Misago Test Mail", "misago/emails/base")
  14. def test_building_mail_without_settings_in_context_raises_value_error(self):
  15. user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
  16. with self.assertRaises(ValueError):
  17. build_mail(
  18. user, "Misago Test Mail", "misago/emails/base", context={"settings": {}}
  19. )
  20. def test_mail_user(self):
  21. """mail_user sets message in backend"""
  22. user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
  23. cache_versions = get_cache_versions()
  24. settings = DynamicSettings(cache_versions)
  25. mail_user(
  26. user,
  27. "Misago Test Mail",
  28. "misago/emails/base",
  29. context={"settings": settings},
  30. )
  31. self.assertEqual(mail.outbox[0].subject, "Misago Test Mail")
  32. # assert that url to user's avatar is valid
  33. html_body = mail.outbox[0].alternatives[0][0]
  34. user_avatar_url = reverse(
  35. "misago:user-avatar", kwargs={"pk": user.pk, "size": 32}
  36. )
  37. self.assertIn(user_avatar_url, html_body)
  38. def test_mail_users(self):
  39. """mail_users sets messages in backend"""
  40. cache_versions = get_cache_versions()
  41. settings = DynamicSettings(cache_versions)
  42. test_users = [
  43. UserModel.objects.create_user("Alpha", "alpha@test.com", "pass123"),
  44. UserModel.objects.create_user("Beta", "beta@test.com", "pass123"),
  45. UserModel.objects.create_user("Niner", "niner@test.com", "pass123"),
  46. UserModel.objects.create_user("Foxtrot", "foxtrot@test.com", "pass123"),
  47. UserModel.objects.create_user("Uniform", "uniform@test.com", "pass123"),
  48. ]
  49. mail_users(
  50. test_users,
  51. "Misago Test Spam",
  52. "misago/emails/base",
  53. context={"settings": settings},
  54. )
  55. spams_sent = 0
  56. for message in mail.outbox:
  57. if message.subject == "Misago Test Spam":
  58. spams_sent += 1
  59. self.assertEqual(spams_sent, len(test_users))