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.
60 lines
2.4 KiB
Python
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"))
|