You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/mailer/tests/views.py

60 lines
2.4 KiB
Python

from http import HTTPStatus
from django.urls import reverse
from django.utils import timezone
from django.utils.translation import gettext as _
from .utils import BasicMailerTestCase
class IndexTestCase(BasicMailerTestCase):
def test_index(self):
url = reverse("mailer:index")
response = self.client.get(url)
self.assertEqual(response.status_code, HTTPStatus.FOUND)
class UnsubscribeTestCase(BasicMailerTestCase):
def test_unsubscribe(self):
url = reverse("mailer:unsubscribe")
response = self.client.get(url)
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Here you can unsubscribe from the newsletter"))
def test_unsubscribe_key_invalid(self):
url = reverse("mailer:unsubscribe")
# invalid key
response = self.client.get(url, data={"key": "invalid"})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Can't verify this link. Try again!"))
# expired key
self.fritz.unsubscribe_expire = timezone.now()
self.fritz.save()
response = self.client.get(url, data={"key": self.fritz.unsubscribe_key})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Can't verify this link. Try again!"))
def test_unsubscribe_key(self):
url = reverse("mailer:unsubscribe")
response = self.client.get(url, data={"key": self.fritz.unsubscribe_key})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Successfully unsubscribed from the newsletter for "))
def test_unsubscribe_post_incomplete(self):
url = reverse("mailer:unsubscribe")
response = self.client.post(url, data={"post": True})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Please fill in every field"))
response = self.client.post(url, data={"post": True, "email": "foobar@notexisting.com"})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Please fill in every field"))
def test_unsubscribe_post(self):
url = reverse("mailer:unsubscribe")
response = self.client.post(url, data={"post": True, "email": self.fritz.email})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("Sent confirmation mail to"))