diff options
| author | Tim Graham <timograham@gmail.com> | 2015-01-18 16:43:57 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-01-18 17:43:06 -0500 |
| commit | 6e13c0490d67cdf210411f08feca3b78a49645ea (patch) | |
| tree | 5d9bc14688364af1d58ca38b6ac6e5877481f6a1 /tests | |
| parent | bd98926f0eb19d27821a8a7679b42ff46e53e4da (diff) | |
Changed RedirectView.permanent to False per deprecation timeline; refs #21587.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/generic_views/test_base.py | 119 | ||||
| -rw-r--r-- | tests/test_client/urls.py | 4 | ||||
| -rw-r--r-- | tests/test_client_regress/tests.py | 38 | ||||
| -rw-r--r-- | tests/test_client_regress/urls.py | 24 | ||||
| -rw-r--r-- | tests/urlpatterns_reverse/reverse_lazy_urls.py | 3 | ||||
| -rw-r--r-- | tests/urlpatterns_reverse/tests.py | 2 |
6 files changed, 64 insertions, 126 deletions
diff --git a/tests/generic_views/test_base.py b/tests/generic_views/test_base.py index ce3a0f52d6..47518fdd92 100644 --- a/tests/generic_views/test_base.py +++ b/tests/generic_views/test_base.py @@ -2,14 +2,11 @@ from __future__ import unicode_literals import time import unittest -import warnings from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import resolve from django.http import HttpResponse -from django.utils import six -from django.utils.deprecation import RemovedInDjango19Warning -from django.test import TestCase, RequestFactory, ignore_warnings, override_settings +from django.test import TestCase, RequestFactory, override_settings from django.views.generic import View, TemplateView, RedirectView from . import views @@ -340,7 +337,6 @@ class TemplateViewTest(TestCase): self.assertIs(match.func.view_class, TemplateView) -@ignore_warnings(category=RemovedInDjango19Warning) @override_settings(ROOT_URLCONF='generic_views.urls') class RedirectViewTest(TestCase): @@ -351,14 +347,20 @@ class RedirectViewTest(TestCase): response = RedirectView.as_view()(self.rf.get('/foo/')) self.assertEqual(response.status_code, 410) - def test_permanent_redirect(self): - "Default is a permanent redirect" + def test_default_redirect(self): + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.get('/foo/')) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, '/bar/') + + def test_permanent_redirect(self): + "Permanent redirects are an option" + response = RedirectView.as_view(url='/bar/', permanent=True)(self.rf.get('/foo/')) self.assertEqual(response.status_code, 301) self.assertEqual(response.url, '/bar/') def test_temporary_redirect(self): - "Permanent redirects are an option" + "Temporary redirects are an option" response = RedirectView.as_view(url='/bar/', permanent=False)(self.rf.get('/foo/')) self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') @@ -366,35 +368,35 @@ class RedirectViewTest(TestCase): def test_include_args(self): "GET arguments can be included in the redirected URL" response = RedirectView.as_view(url='/bar/')(self.rf.get('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') response = RedirectView.as_view(url='/bar/', query_string=True)(self.rf.get('/foo/?pork=spam')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/?pork=spam') def test_include_urlencoded_args(self): "GET arguments can be URL-encoded when included in the redirected URL" response = RedirectView.as_view(url='/bar/', query_string=True)( self.rf.get('/foo/?unicode=%E2%9C%93')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/?unicode=%E2%9C%93') def test_parameter_substitution(self): "Redirection URLs can be parameterized" response = RedirectView.as_view(url='/bar/%(object_id)d/')(self.rf.get('/foo/42/'), object_id=42) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/42/') def test_named_url_pattern(self): "Named pattern parameter should reverse to the matching pattern" response = RedirectView.as_view(pattern_name='artist_detail')(self.rf.get('/foo/'), pk=1) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], '/detail/artist/1/') def test_named_url_pattern_using_args(self): response = RedirectView.as_view(pattern_name='artist_detail')(self.rf.get('/foo/'), 1) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], '/detail/artist/1/') def test_wrong_named_url_pattern(self): @@ -403,46 +405,46 @@ class RedirectViewTest(TestCase): self.assertEqual(response.status_code, 410) def test_redirect_POST(self): - "Default is a permanent redirect" + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.post('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') def test_redirect_HEAD(self): - "Default is a permanent redirect" + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.head('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') def test_redirect_OPTIONS(self): - "Default is a permanent redirect" + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.options('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') def test_redirect_PUT(self): - "Default is a permanent redirect" + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.put('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') def test_redirect_PATCH(self): - "Default is a permanent redirect" + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.patch('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') def test_redirect_DELETE(self): - "Default is a permanent redirect" + "Default is a temporary redirect" response = RedirectView.as_view(url='/bar/')(self.rf.delete('/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/bar/') def test_redirect_when_meta_contains_no_query_string(self): "regression for #16705" # we can't use self.rf.get because it always sets QUERY_STRING response = RedirectView.as_view(url='/bar/')(self.rf.request(PATH_INFO='/foo/')) - self.assertEqual(response.status_code, 301) + self.assertEqual(response.status_code, 302) def test_direct_instantiation(self): """ @@ -454,69 +456,6 @@ class RedirectViewTest(TestCase): self.assertEqual(response.status_code, 410) -@override_settings(ROOT_URLCONF='generic_views.urls') -class RedirectViewDeprecationTest(TestCase): - - rf = RequestFactory() - - def test_deprecation_warning_init(self): - with warnings.catch_warnings(record=True) as warns: - warnings.simplefilter('always') - - view = RedirectView() - response = view.dispatch(self.rf.head('/python/')) - - self.assertEqual(response.status_code, 410) - self.assertEqual(len(warns), 1) - self.assertIs(warns[0].category, RemovedInDjango19Warning) - self.assertEqual( - six.text_type(warns[0].message), - "Default value of 'RedirectView.permanent' will change " - "from True to False in Django 1.9. Set an explicit value " - "to silence this warning.", - ) - - def test_deprecation_warning_raised_when_permanent_not_passed(self): - with warnings.catch_warnings(record=True) as warns: - warnings.simplefilter('always') - - view_function = RedirectView.as_view(url='/bbb/') - request = self.rf.request(PATH_INFO='/aaa/') - view_function(request) - - self.assertEqual(len(warns), 1) - self.assertIs(warns[0].category, RemovedInDjango19Warning) - self.assertEqual( - six.text_type(warns[0].message), - "Default value of 'RedirectView.permanent' will change " - "from True to False in Django 1.9. Set an explicit value " - "to silence this warning.", - ) - - def test_no_deprecation_warning_when_permanent_passed(self): - with warnings.catch_warnings(record=True) as warns: - warnings.simplefilter('always') - - view_function = RedirectView.as_view(url='/bar/', permanent=False) - request = self.rf.request(PATH_INFO='/foo/') - view_function(request) - - self.assertEqual(len(warns), 0) - - def test_no_deprecation_warning_with_custom_redirectview(self): - class CustomRedirectView(RedirectView): - permanent = False - - with warnings.catch_warnings(record=True) as warns: - warnings.simplefilter('always') - - view_function = CustomRedirectView.as_view(url='/eggs/') - request = self.rf.request(PATH_INFO='/spam/') - view_function(request) - - self.assertEqual(len(warns), 0) - - class GetContextDataTest(unittest.TestCase): def test_get_context_data_super(self): diff --git a/tests/test_client/urls.py b/tests/test_client/urls.py index 45d2859633..72fe9676ee 100644 --- a/tests/test_client/urls.py +++ b/tests/test_client/urls.py @@ -15,8 +15,8 @@ urlpatterns = [ url(r'^secure_view/$', views.view_with_secure), url(r'^permanent_redirect_view/$', RedirectView.as_view(url='/get_view/', permanent=True)), url(r'^temporary_redirect_view/$', RedirectView.as_view(url='/get_view/', permanent=False)), - url(r'^http_redirect_view/$', RedirectView.as_view(url='/secure_view/', permanent=True)), - url(r'^https_redirect_view/$', RedirectView.as_view(url='https://testserver/secure_view/', permanent=True)), + url(r'^http_redirect_view/$', RedirectView.as_view(url='/secure_view/')), + url(r'^https_redirect_view/$', RedirectView.as_view(url='https://testserver/secure_view/')), url(r'^double_redirect_view/$', views.double_redirect_view), url(r'^bad_view/$', views.bad_view), url(r'^form_view/$', views.form_view), diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py index 1ae9457300..43a2298017 100644 --- a/tests/test_client_regress/tests.py +++ b/tests/test_client_regress/tests.py @@ -353,27 +353,27 @@ class AssertRedirectsTests(TestCase): "You can follow a redirect chain of multiple redirects" response = self.client.get('/redirects/further/more/', {}, follow=True) self.assertRedirects(response, '/no_template_view/', - status_code=301, target_status_code=200) + status_code=302, target_status_code=200) self.assertEqual(len(response.redirect_chain), 1) - self.assertEqual(response.redirect_chain[0], ('http://testserver/no_template_view/', 301)) + self.assertEqual(response.redirect_chain[0], ('http://testserver/no_template_view/', 302)) def test_multiple_redirect_chain(self): "You can follow a redirect chain of multiple redirects" response = self.client.get('/redirects/', {}, follow=True) self.assertRedirects(response, '/no_template_view/', - status_code=301, target_status_code=200) + status_code=302, target_status_code=200) self.assertEqual(len(response.redirect_chain), 3) - self.assertEqual(response.redirect_chain[0], ('http://testserver/redirects/further/', 301)) - self.assertEqual(response.redirect_chain[1], ('http://testserver/redirects/further/more/', 301)) - self.assertEqual(response.redirect_chain[2], ('http://testserver/no_template_view/', 301)) + self.assertEqual(response.redirect_chain[0], ('http://testserver/redirects/further/', 302)) + self.assertEqual(response.redirect_chain[1], ('http://testserver/redirects/further/more/', 302)) + self.assertEqual(response.redirect_chain[2], ('http://testserver/no_template_view/', 302)) def test_redirect_chain_to_non_existent(self): "You can follow a chain to a non-existent view" response = self.client.get('/redirect_to_non_existent_view2/', {}, follow=True) self.assertRedirects(response, '/non_existent_view/', - status_code=301, target_status_code=404) + status_code=302, target_status_code=404) def test_redirect_chain_to_self(self): "Redirections to self are caught and escaped" @@ -382,7 +382,7 @@ class AssertRedirectsTests(TestCase): response = context.exception.last_response # The chain of redirects stops once the cycle is detected. self.assertRedirects(response, '/redirect_to_self/', - status_code=301, target_status_code=301) + status_code=302, target_status_code=302) self.assertEqual(len(response.redirect_chain), 2) def test_redirect_to_self_with_changing_query(self): @@ -397,7 +397,7 @@ class AssertRedirectsTests(TestCase): response = context.exception.last_response # The chain of redirects will get back to the starting point, but stop there. self.assertRedirects(response, '/circular_redirect_2/', - status_code=301, target_status_code=301) + status_code=302, target_status_code=302) self.assertEqual(len(response.redirect_chain), 4) def test_redirect_chain_post(self): @@ -405,7 +405,7 @@ class AssertRedirectsTests(TestCase): response = self.client.post('/redirects/', {'nothing': 'to_send'}, follow=True) self.assertRedirects(response, - '/no_template_view/', 301, 200) + '/no_template_view/', 302, 200) self.assertEqual(len(response.redirect_chain), 3) def test_redirect_chain_head(self): @@ -413,7 +413,7 @@ class AssertRedirectsTests(TestCase): response = self.client.head('/redirects/', {'nothing': 'to_send'}, follow=True) self.assertRedirects(response, - '/no_template_view/', 301, 200) + '/no_template_view/', 302, 200) self.assertEqual(len(response.redirect_chain), 3) def test_redirect_chain_options(self): @@ -421,7 +421,7 @@ class AssertRedirectsTests(TestCase): response = self.client.options('/redirects/', follow=True) self.assertRedirects(response, - '/no_template_view/', 301, 200) + '/no_template_view/', 302, 200) self.assertEqual(len(response.redirect_chain), 3) def test_redirect_chain_put(self): @@ -429,7 +429,7 @@ class AssertRedirectsTests(TestCase): response = self.client.put('/redirects/', follow=True) self.assertRedirects(response, - '/no_template_view/', 301, 200) + '/no_template_view/', 302, 200) self.assertEqual(len(response.redirect_chain), 3) def test_redirect_chain_delete(self): @@ -437,7 +437,7 @@ class AssertRedirectsTests(TestCase): response = self.client.delete('/redirects/', follow=True) self.assertRedirects(response, - '/no_template_view/', 301, 200) + '/no_template_view/', 302, 200) self.assertEqual(len(response.redirect_chain), 3) def test_redirect_to_different_host(self): @@ -445,7 +445,7 @@ class AssertRedirectsTests(TestCase): response = self.client.get('/redirect_other_host/', follow=True) self.assertRedirects(response, 'https://otherserver:8443/no_template_view/', - status_code=301, target_status_code=200) + status_code=302, target_status_code=200) # We can't use is_secure() or get_host() # because response.request is a dictionary, not an HttpRequest self.assertEqual(response.request.get('wsgi.url_scheme'), 'https') @@ -492,11 +492,11 @@ class AssertRedirectsTests(TestCase): # always redirects to https response = self.client.get('/https_redirect_view/', follow=follow, secure=secure) # no scheme to compare too, always succeeds - self.assertRedirects(response, '/secure_view/', status_code=301) + self.assertRedirects(response, '/secure_view/', status_code=302) # the goal scheme is https - self.assertRedirects(response, 'https://testserver/secure_view/', status_code=301) + self.assertRedirects(response, 'https://testserver/secure_view/', status_code=302) with self.assertRaises(AssertionError): - self.assertRedirects(response, 'http://testserver/secure_view/', status_code=301) + self.assertRedirects(response, 'http://testserver/secure_view/', status_code=302) @override_settings(ROOT_URLCONF='test_client_regress.urls') @@ -1369,7 +1369,7 @@ class RequestHeadersTest(TestCase): response = self.client.get("/check_headers_redirect/", follow=True, HTTP_X_ARG_CHECK='Testing 123') self.assertEqual(response.content, b"HTTP_X_ARG_CHECK: Testing 123") self.assertRedirects(response, '/check_headers/', - status_code=301, target_status_code=200) + status_code=302, target_status_code=200) @override_settings(ROOT_URLCONF='test_client_regress.urls') diff --git a/tests/test_client_regress/urls.py b/tests/test_client_regress/urls.py index 8914c82902..a69a774555 100644 --- a/tests/test_client_regress/urls.py +++ b/tests/test_client_regress/urls.py @@ -3,7 +3,7 @@ from django.views.generic import RedirectView from . import views -# TODO: Remove permanent=True where it doesn't matter in Django 1.9 + urlpatterns = [ url(r'', include('test_client.urls')), @@ -15,17 +15,17 @@ urlpatterns = [ url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'), url(r'^nested_view/$', views.nested_view, name='nested_view'), url(r'^login_protected_redirect_view/$', views.login_protected_redirect_view), - url(r'^redirects/$', RedirectView.as_view(url='/redirects/further/', permanent=True)), - url(r'^redirects/further/$', RedirectView.as_view(url='/redirects/further/more/', permanent=True)), - url(r'^redirects/further/more/$', RedirectView.as_view(url='/no_template_view/', permanent=True)), - url(r'^redirect_to_non_existent_view/$', RedirectView.as_view(url='/non_existent_view/', permanent=True)), - url(r'^redirect_to_non_existent_view2/$', RedirectView.as_view(url='/redirect_to_non_existent_view/', permanent=True)), - url(r'^redirect_to_self/$', RedirectView.as_view(url='/redirect_to_self/', permanent=True)), + url(r'^redirects/$', RedirectView.as_view(url='/redirects/further/')), + url(r'^redirects/further/$', RedirectView.as_view(url='/redirects/further/more/')), + url(r'^redirects/further/more/$', RedirectView.as_view(url='/no_template_view/')), + url(r'^redirect_to_non_existent_view/$', RedirectView.as_view(url='/non_existent_view/')), + url(r'^redirect_to_non_existent_view2/$', RedirectView.as_view(url='/redirect_to_non_existent_view/')), + url(r'^redirect_to_self/$', RedirectView.as_view(url='/redirect_to_self/')), url(r'^redirect_to_self_with_changing_query_view/$', views.redirect_to_self_with_changing_query_view), - url(r'^circular_redirect_1/$', RedirectView.as_view(url='/circular_redirect_2/', permanent=True)), - url(r'^circular_redirect_2/$', RedirectView.as_view(url='/circular_redirect_3/', permanent=True)), - url(r'^circular_redirect_3/$', RedirectView.as_view(url='/circular_redirect_1/', permanent=True)), - url(r'^redirect_other_host/$', RedirectView.as_view(url='https://otherserver:8443/no_template_view/', permanent=True)), + url(r'^circular_redirect_1/$', RedirectView.as_view(url='/circular_redirect_2/')), + url(r'^circular_redirect_2/$', RedirectView.as_view(url='/circular_redirect_3/')), + url(r'^circular_redirect_3/$', RedirectView.as_view(url='/circular_redirect_1/')), + url(r'^redirect_other_host/$', RedirectView.as_view(url='https://otherserver:8443/no_template_view/')), url(r'^set_session/$', views.set_session_view), url(r'^check_session/$', views.check_session_view), url(r'^request_methods/$', views.request_methods_view), @@ -33,7 +33,7 @@ urlpatterns = [ url(r'^check_binary/$', views.return_undecodable_binary), url(r'^parse_unicode_json/$', views.return_json_file), url(r'^check_headers/$', views.check_headers), - url(r'^check_headers_redirect/$', RedirectView.as_view(url='/check_headers/', permanent=True)), + url(r'^check_headers_redirect/$', RedirectView.as_view(url='/check_headers/')), url(r'^body/$', views.body), url(r'^read_all/$', views.read_all), url(r'^read_buffer/$', views.read_buffer), diff --git a/tests/urlpatterns_reverse/reverse_lazy_urls.py b/tests/urlpatterns_reverse/reverse_lazy_urls.py index 76ff67b2c0..57358f6254 100644 --- a/tests/urlpatterns_reverse/reverse_lazy_urls.py +++ b/tests/urlpatterns_reverse/reverse_lazy_urls.py @@ -6,6 +6,5 @@ urlpatterns = [ url(r'^redirected_to/$', empty_view, name='named-lazy-url-redirected-to'), url(r'^login/$', empty_view, name='some-login-page'), url(r'^login_required_view/$', login_required_view), - # TODO: Remove permanent=True where it doesn't matter in Django 1.9 - url(r'^redirect/$', LazyRedirectView.as_view(permanent=True)), + url(r'^redirect/$', LazyRedirectView.as_view()), ] diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py index a9dffdc162..310250152f 100644 --- a/tests/urlpatterns_reverse/tests.py +++ b/tests/urlpatterns_reverse/tests.py @@ -308,7 +308,7 @@ class ReverseLazyTest(TestCase): def test_redirect_with_lazy_reverse(self): response = self.client.get('/redirect/') - self.assertRedirects(response, "/redirected_to/", status_code=301) + self.assertRedirects(response, "/redirected_to/", status_code=302) def test_user_permission_with_lazy_reverse(self): User.objects.create_user('alfred', 'alfred@example.com', password='testpw') |
