50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from django.contrib.auth import get_user_model
|
|
from django.core import mail as django_mail
|
|
from django.test import TestCase
|
|
|
|
from dav_base.tests.generic import EmailTestMixin
|
|
|
|
from ..emails import PasswordSetEmail
|
|
|
|
|
|
TEST_USERNAME = 'user'
|
|
TEST_PASSWORD = 'me||ön 21ABll'
|
|
TEST_EMAIL = 'root@localhost'
|
|
|
|
PASSWORD_EMAIL_TEMPLATE = """Hallo {fullname},
|
|
|
|
Benutzername: {username}
|
|
Passwort: {password}
|
|
|
|
URL: {base_url}/
|
|
"""
|
|
|
|
|
|
class EmailTestCase(EmailTestMixin, TestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
model = get_user_model()
|
|
self.user = model.objects.create_user(username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL)
|
|
|
|
def test_send(self):
|
|
password = TEST_PASSWORD[::-1]
|
|
|
|
email = PasswordSetEmail(self.user, password)
|
|
email.send()
|
|
|
|
self.assertEqual(len(django_mail.outbox), 1)
|
|
mail = django_mail.outbox[0]
|
|
|
|
self.assertSender(mail)
|
|
self.assertRecipients(mail, [self.user])
|
|
self.assertSubject(mail, 'Zugangsdaten')
|
|
|
|
expected_body = PASSWORD_EMAIL_TEMPLATE.format(
|
|
fullname=self.user.get_full_name(),
|
|
username=self.user.username,
|
|
password=password,
|
|
base_url=self.email_base_url,
|
|
)
|
|
self.assertBody(mail, expected_body)
|