diff --git a/src/postorius/tests/mailman_api_tests/test_list_members.py b/src/postorius/tests/mailman_api_tests/test_list_members.py index f09989c..c5dcb29 100644 --- a/src/postorius/tests/mailman_api_tests/test_list_members.py +++ b/src/postorius/tests/mailman_api_tests/test_list_members.py @@ -16,14 +16,13 @@ # Postorius. If not, see . import logging +from django.conf import settings from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.test import Client, TestCase from django.test.utils import override_settings -try: - from urllib2 import HTTPError -except ImportError: - from urllib.error import HTTPError +from six.moves.urllib_error import HTTPError +from six.moves.urllib_parse import quote from postorius.tests import MM_VCR, API_CREDENTIALS from postorius.utils import get_client @@ -73,9 +72,11 @@ @MM_VCR.use_cassette('list_members_access.yaml') def test_page_not_accessible_if_not_logged_in(self): - response = self.client.get(reverse('list_members', - args=('foo@example.com', ))) - self.assertEqual(response.status_code, 403) + url = reverse('list_members', args=('foo@example.com', )) + response = self.client.get(url) + expected_redirect = "%s?next=%s" % (settings.LOGIN_URL, quote(url)) + self.assertRedirects(response, expected_redirect, + fetch_redirect_response=False) @MM_VCR.use_cassette('list_members_access.yaml') def test_page_not_accessible_for_unprivileged_users(self): diff --git a/src/postorius/tests/mailman_api_tests/test_list_metrics.py b/src/postorius/tests/mailman_api_tests/test_list_metrics.py index c2865cf..53f70a8 100644 --- a/src/postorius/tests/mailman_api_tests/test_list_metrics.py +++ b/src/postorius/tests/mailman_api_tests/test_list_metrics.py @@ -6,11 +6,13 @@ import logging +from django.conf import settings from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.test import Client, SimpleTestCase from django.test.utils import override_settings from six.moves.urllib_error import HTTPError +from six.moves.urllib_parse import quote from postorius.utils import get_client from postorius.tests import MM_VCR, API_CREDENTIALS @@ -41,8 +43,11 @@ @MM_VCR.use_cassette('test_list_metrics.yaml') def test_metrics_page_not_accessible_to_anonymous(self): - response = self.client.get(reverse('list_metrics', args=['test@example.org'])) - self.assertEqual(response.status_code, 403) + url = reverse('list_metrics', args=['test@example.org']) + response = self.client.get(url) + expected_redirect = "%s?next=%s" % (settings.LOGIN_URL, quote(url)) + self.assertRedirects(response, expected_redirect, + fetch_redirect_response=False) @MM_VCR.use_cassette('test_list_metrics.yaml') def test_metrics_page_contains_metrics(self): diff --git a/src/postorius/views/list.py b/src/postorius/views/list.py index f14f1d6..76197e2 100644 --- a/src/postorius/views/list.py +++ b/src/postorius/views/list.py @@ -417,6 +417,8 @@ return utils.render_api_error(request) except HTTPError as e: messages.error(request, e.msg) + else: + return redirect('list_held_messages', self.mailing_list.list_id) return render_to_response('postorius/lists/held_messages.html', {'list': self.mailing_list, 'form':form}, context_instance=RequestContext(request))