1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from django.contrib.auth import get_user_model
- from django.core import mail
- from django.test import TestCase
- from django.urls import reverse
- from misago.cache.versions import get_cache_versions
- from misago.conf.dynamicsettings import DynamicSettings
- from misago.core.mail import build_mail, mail_user, mail_users
- UserModel = get_user_model()
- class MailTests(TestCase):
- def test_building_mail_without_context_raises_value_error(self):
- user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
- with self.assertRaises(ValueError):
- build_mail(user, "Misago Test Mail", "misago/emails/base")
- def test_building_mail_without_settings_in_context_raises_value_error(self):
- user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
- with self.assertRaises(ValueError):
- build_mail(
- user, "Misago Test Mail", "misago/emails/base", context={"settings": {}}
- )
- def test_mail_user(self):
- """mail_user sets message in backend"""
- user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
- cache_versions = get_cache_versions()
- settings = DynamicSettings(cache_versions)
- mail_user(
- user,
- "Misago Test Mail",
- "misago/emails/base",
- context={"settings": settings},
- )
- self.assertEqual(mail.outbox[0].subject, "Misago Test Mail")
- # assert that url to user's avatar is valid
- html_body = mail.outbox[0].alternatives[0][0]
- user_avatar_url = reverse(
- "misago:user-avatar", kwargs={"pk": user.pk, "size": 32}
- )
- self.assertIn(user_avatar_url, html_body)
- def test_mail_users(self):
- """mail_users sets messages in backend"""
- cache_versions = get_cache_versions()
- settings = DynamicSettings(cache_versions)
- test_users = [
- UserModel.objects.create_user("Alpha", "alpha@test.com", "pass123"),
- UserModel.objects.create_user("Beta", "beta@test.com", "pass123"),
- UserModel.objects.create_user("Niner", "niner@test.com", "pass123"),
- UserModel.objects.create_user("Foxtrot", "foxtrot@test.com", "pass123"),
- UserModel.objects.create_user("Uniform", "uniform@test.com", "pass123"),
- ]
- mail_users(
- test_users,
- "Misago Test Spam",
- "misago/emails/base",
- context={"settings": settings},
- )
- spams_sent = 0
- for message in mail.outbox:
- if message.subject == "Misago Test Spam":
- spams_sent += 1
- self.assertEqual(spams_sent, len(test_users))
|