diff options
| author | ThinkChaos <ThinkChaos@users.noreply.github.com> | 2017-06-07 16:48:28 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-02-08 21:08:05 +0100 |
| commit | b99d6c9cbc8eecf480892599201eef0d14b20d71 (patch) | |
| tree | a563f6643d977ba1b97f2674da5e002a700399f5 /tests/auth_tests | |
| parent | 59841170ba1785ada10a2915b0b60efdb046ee39 (diff) | |
Fixed #28216 -- Added next_page/get_default_redirect_url() to LoginView.
Diffstat (limited to 'tests/auth_tests')
| -rw-r--r-- | tests/auth_tests/test_views.py | 29 | ||||
| -rw-r--r-- | tests/auth_tests/urls.py | 9 |
2 files changed, 36 insertions, 2 deletions
diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py index e57d661772..0ec3a134c2 100644 --- a/tests/auth_tests/test_views.py +++ b/tests/auth_tests/test_views.py @@ -52,8 +52,8 @@ class AuthViewsTestCase(TestCase): cls.u1 = User.objects.create_user(username='testclient', password='password', email='testclient@example.com') cls.u3 = User.objects.create_user(username='staff', password='password', email='staffmember@example.com') - def login(self, username='testclient', password='password'): - response = self.client.post('/login/', { + def login(self, username='testclient', password='password', url='/login/'): + response = self.client.post(url, { 'username': username, 'password': password, }) @@ -726,6 +726,31 @@ class LoginTest(AuthViewsTestCase): self.login() self.assertNotEqual(original_session_key, self.client.session.session_key) + def test_login_get_default_redirect_url(self): + response = self.login(url='/login/get_default_redirect_url/') + self.assertRedirects(response, '/custom/', fetch_redirect_response=False) + + def test_login_next_page(self): + response = self.login(url='/login/next_page/') + self.assertRedirects(response, '/somewhere/', fetch_redirect_response=False) + + def test_login_named_next_page_named(self): + response = self.login(url='/login/next_page/named/') + self.assertRedirects(response, '/password_reset/', fetch_redirect_response=False) + + @override_settings(LOGIN_REDIRECT_URL='/custom/') + def test_login_next_page_overrides_login_redirect_url_setting(self): + response = self.login(url='/login/next_page/') + self.assertRedirects(response, '/somewhere/', fetch_redirect_response=False) + + def test_login_redirect_url_overrides_next_page(self): + response = self.login(url='/login/next_page/?next=/test/') + self.assertRedirects(response, '/test/', fetch_redirect_response=False) + + def test_login_redirect_url_overrides_get_default_redirect_url(self): + response = self.login(url='/login/get_default_redirect_url/?next=/test/') + self.assertRedirects(response, '/test/', fetch_redirect_response=False) + class LoginURLSettings(AuthViewsTestCase): """Tests for settings.LOGIN_URL.""" diff --git a/tests/auth_tests/urls.py b/tests/auth_tests/urls.py index e225ab9362..044f0da037 100644 --- a/tests/auth_tests/urls.py +++ b/tests/auth_tests/urls.py @@ -3,6 +3,7 @@ from django.contrib.auth import views from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.urls import urlpatterns as auth_urlpatterns +from django.contrib.auth.views import LoginView from django.contrib.messages.api import info from django.http import HttpRequest, HttpResponse from django.shortcuts import render @@ -78,6 +79,11 @@ def login_and_permission_required_exception(request): pass +class CustomDefaultRedirectURLLoginView(LoginView): + def get_default_redirect_url(self): + return '/custom/' + + # special urls for auth test cases urlpatterns = auth_urlpatterns + [ path('logout/custom_query/', views.LogoutView.as_view(redirect_field_name='follow')), @@ -149,6 +155,9 @@ urlpatterns = auth_urlpatterns + [ views.LoginView.as_view(redirect_authenticated_user=True)), path('login/allowed_hosts/', views.LoginView.as_view(success_url_allowed_hosts={'otherserver'})), + path('login/get_default_redirect_url/', CustomDefaultRedirectURLLoginView.as_view()), + path('login/next_page/', views.LoginView.as_view(next_page='/somewhere/')), + path('login/next_page/named/', views.LoginView.as_view(next_page='password_reset')), path('permission_required_redirect/', permission_required_redirect), path('permission_required_exception/', permission_required_exception), |
