test_mail.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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(user, "Misago Test Mail", "misago/emails/base", context={"settings": {}})
  18. def test_mail_user(self):
  19. """mail_user sets message in backend"""
  20. user = UserModel.objects.create_user('Bob', 'bob@bob.com', 'pass123')
  21. cache_versions = get_cache_versions()
  22. settings = DynamicSettings(cache_versions)
  23. mail_user(
  24. user,
  25. "Misago Test Mail",
  26. "misago/emails/base",
  27. context={"settings": settings},
  28. )
  29. self.assertEqual(mail.outbox[0].subject, "Misago Test Mail")
  30. # assert that url to user's avatar is valid
  31. html_body = mail.outbox[0].alternatives[0][0]
  32. user_avatar_url = reverse('misago:user-avatar', kwargs={'pk': user.pk, 'size': 32})
  33. self.assertIn(user_avatar_url, html_body)
  34. def test_mail_users(self):
  35. """mail_users sets messages in backend"""
  36. cache_versions = get_cache_versions()
  37. settings = DynamicSettings(cache_versions)
  38. test_users = [
  39. UserModel.objects.create_user('Alpha', 'alpha@test.com', 'pass123'),
  40. UserModel.objects.create_user('Beta', 'beta@test.com', 'pass123'),
  41. UserModel.objects.create_user('Niner', 'niner@test.com', 'pass123'),
  42. UserModel.objects.create_user('Foxtrot', 'foxtrot@test.com', 'pass123'),
  43. UserModel.objects.create_user('Uniform', 'uniform@test.com', 'pass123'),
  44. ]
  45. mail_users(
  46. test_users,
  47. "Misago Test Spam",
  48. "misago/emails/base",
  49. context={"settings": settings},
  50. )
  51. spams_sent = 0
  52. for message in mail.outbox:
  53. if message.subject == 'Misago Test Spam':
  54. spams_sent += 1
  55. self.assertEqual(spams_sent, len(test_users))