Skip to content
Snippets Groups Projects
Unverified Commit e2b82cba authored by Todd Dembrey's avatar Todd Dembrey Committed by GitHub
Browse files

Merge pull request #617 from OpenTechFund/bugfix/newsletter-cache-busting

Bugfix/newsletter cache busting
parents ada81f0e 7c2baf02
No related branches found
No related tags found
No related merge requests found
from urllib import parse
from unittest import mock from unittest import mock
import re import re
...@@ -17,6 +18,15 @@ class TestNewsletterView(TestCase): ...@@ -17,6 +18,15 @@ class TestNewsletterView(TestCase):
self.origin = 'https://testserver/' self.origin = 'https://testserver/'
self.client.defaults = {'HTTP_ORIGIN': self.origin} self.client.defaults = {'HTTP_ORIGIN': self.origin}
def assertNewsletterRedirects(self, response, target_url, *args, **kwargs):
url = response.redirect_chain[0][0]
parts = parse.urlsplit(url)
self.assertTrue(parts.query.startswith('newsletter-'))
target_url = target_url + '?' + parts.query
return self.assertRedirects(response, target_url, *args, **kwargs)
def test_redirected_home_if_get(self): def test_redirected_home_if_get(self):
response = self.client.get(self.url, secure=True, follow=True) response = self.client.get(self.url, secure=True, follow=True)
request = response.request request = response.request
...@@ -31,7 +41,7 @@ class TestNewsletterView(TestCase): ...@@ -31,7 +41,7 @@ class TestNewsletterView(TestCase):
responses.add(responses.POST, any_url, json={'id': '1234'}, status=200) responses.add(responses.POST, any_url, json={'id': '1234'}, status=200)
response = self.client.post(self.url, data={'email': 'email@email.com'}, secure=True, follow=True) response = self.client.post(self.url, data={'email': 'email@email.com'}, secure=True, follow=True)
self.assertRedirects(response, self.origin) self.assertNewsletterRedirects(response, self.origin)
messages = list(response.context['messages']) messages = list(response.context['messages'])
self.assertEqual(len(messages), 1) self.assertEqual(len(messages), 1)
...@@ -39,7 +49,7 @@ class TestNewsletterView(TestCase): ...@@ -39,7 +49,7 @@ class TestNewsletterView(TestCase):
def test_error_in_form(self): def test_error_in_form(self):
response = self.client.post(self.url, data={'email': 'email_is_bad.com'}, secure=True, follow=True) response = self.client.post(self.url, data={'email': 'email_is_bad.com'}, secure=True, follow=True)
self.assertRedirects(response, self.origin) self.assertNewsletterRedirects(response, self.origin)
messages = list(response.context['messages']) messages = list(response.context['messages'])
self.assertEqual(len(messages), 1) self.assertEqual(len(messages), 1)
...@@ -61,7 +71,7 @@ class TestNewsletterView(TestCase): ...@@ -61,7 +71,7 @@ class TestNewsletterView(TestCase):
responses.add(responses.POST, any_url, json=response_data, status=400) responses.add(responses.POST, any_url, json=response_data, status=400)
response = self.client.post(self.url, data={'email': 'email@email.com'}, secure=True, follow=True) response = self.client.post(self.url, data={'email': 'email@email.com'}, secure=True, follow=True)
self.assertRedirects(response, self.origin) self.assertNewsletterRedirects(response, self.origin)
messages = list(response.context['messages']) messages = list(response.context['messages'])
self.assertEqual(len(messages), 1) self.assertEqual(len(messages), 1)
......
...@@ -79,11 +79,7 @@ class MailchimpSubscribeView(FormMixin, RedirectView): ...@@ -79,11 +79,7 @@ class MailchimpSubscribeView(FormMixin, RedirectView):
def get_success_url(self): def get_success_url(self):
# Go back to where you came from, default to front page. # Go back to where you came from, default to front page.
origin = '/' origin = self.request.META.get('HTTP_ORIGIN') or self.request.META.get('HTTP_REFERER') or '/'
if 'HTTP_ORIGIN' in self.request.META:
origin = self.request.META['HTTP_ORIGIN']
elif 'HTTP_REFERER' in self.request.META:
origin = self.request.META['HTTP_REFERER']
# Add cache busting query string. # Add cache busting query string.
return origin + '?newsletter-' + uuid.uuid4().hex return origin + '?newsletter-' + uuid.uuid4().hex
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment