Loading django/test/testcases.py +6 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ from django.utils.decorators import classproperty from django.utils.deprecation import RemovedInDjango20Warning from django.utils.encoding import force_text from django.utils.six.moves.urllib.parse import ( unquote, urlparse, urlsplit, urlunsplit, unquote, urljoin, urlparse, urlsplit, urlunsplit, ) from django.utils.six.moves.urllib.request import url2pathname from django.views.static import serve Loading Loading @@ -291,6 +291,11 @@ class SimpleTestCase(unittest.TestCase): url = response.url scheme, netloc, path, query, fragment = urlsplit(url) # Prepend the request path to handle relative path redirects. if not path.startswith('/'): url = urljoin(response.request['PATH_INFO'], url) path = urljoin(response.request['PATH_INFO'], path) if fetch_redirect_response: redirect_response = response.client.get(path, QueryDict(query), secure=(scheme == 'https')) Loading docs/releases/1.9.6.txt +3 −1 Original line number Diff line number Diff line Loading @@ -9,4 +9,6 @@ Django 1.9.6 fixes several bugs in 1.9.5. Bugfixes ======== * ... * Added support for relative path redirects to ``SimpleTestCase.assertRedirects()`` because Django 1.9 no longer converts redirects to absolute URIs (:ticket:`26428`). tests/test_client/tests.py +8 −0 Original line number Diff line number Diff line Loading @@ -623,6 +623,14 @@ class ClientTest(TestCase): # Check some response details self.assertContains(response, 'This is a test') def test_relative_redirect(self): response = self.client.get('/accounts/') self.assertRedirects(response, '/accounts/login/') def test_relative_redirect_no_trailing_slash(self): response = self.client.get('/accounts/no_trailing_slash') self.assertRedirects(response, '/accounts/login/') def test_mass_mail_sending(self): "Test that mass mail is redirected to a dummy outbox during test setup" Loading tests/test_client/urls.py +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ urlpatterns = [ url(r'^nesting_exception_view/$', views.nesting_exception_view), url(r'^django_project_redirect/$', views.django_project_redirect), url(r'^accounts/$', RedirectView.as_view(url='login/')), url(r'^accounts/no_trailing_slash$', RedirectView.as_view(url='login/')), url(r'^accounts/login/$', auth_views.login, {'template_name': 'login.html'}), url(r'^accounts/logout/$', auth_views.logout), ] Loading
django/test/testcases.py +6 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ from django.utils.decorators import classproperty from django.utils.deprecation import RemovedInDjango20Warning from django.utils.encoding import force_text from django.utils.six.moves.urllib.parse import ( unquote, urlparse, urlsplit, urlunsplit, unquote, urljoin, urlparse, urlsplit, urlunsplit, ) from django.utils.six.moves.urllib.request import url2pathname from django.views.static import serve Loading Loading @@ -291,6 +291,11 @@ class SimpleTestCase(unittest.TestCase): url = response.url scheme, netloc, path, query, fragment = urlsplit(url) # Prepend the request path to handle relative path redirects. if not path.startswith('/'): url = urljoin(response.request['PATH_INFO'], url) path = urljoin(response.request['PATH_INFO'], path) if fetch_redirect_response: redirect_response = response.client.get(path, QueryDict(query), secure=(scheme == 'https')) Loading
docs/releases/1.9.6.txt +3 −1 Original line number Diff line number Diff line Loading @@ -9,4 +9,6 @@ Django 1.9.6 fixes several bugs in 1.9.5. Bugfixes ======== * ... * Added support for relative path redirects to ``SimpleTestCase.assertRedirects()`` because Django 1.9 no longer converts redirects to absolute URIs (:ticket:`26428`).
tests/test_client/tests.py +8 −0 Original line number Diff line number Diff line Loading @@ -623,6 +623,14 @@ class ClientTest(TestCase): # Check some response details self.assertContains(response, 'This is a test') def test_relative_redirect(self): response = self.client.get('/accounts/') self.assertRedirects(response, '/accounts/login/') def test_relative_redirect_no_trailing_slash(self): response = self.client.get('/accounts/no_trailing_slash') self.assertRedirects(response, '/accounts/login/') def test_mass_mail_sending(self): "Test that mass mail is redirected to a dummy outbox during test setup" Loading
tests/test_client/urls.py +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ urlpatterns = [ url(r'^nesting_exception_view/$', views.nesting_exception_view), url(r'^django_project_redirect/$', views.django_project_redirect), url(r'^accounts/$', RedirectView.as_view(url='login/')), url(r'^accounts/no_trailing_slash$', RedirectView.as_view(url='login/')), url(r'^accounts/login/$', auth_views.login, {'template_name': 'login.html'}), url(r'^accounts/logout/$', auth_views.logout), ]