summaryrefslogtreecommitdiff
path: root/tests/auth_tests
diff options
context:
space:
mode:
authorThinkChaos <ThinkChaos@users.noreply.github.com>2017-06-07 16:48:28 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-02-08 21:08:05 +0100
commitb99d6c9cbc8eecf480892599201eef0d14b20d71 (patch)
treea563f6643d977ba1b97f2674da5e002a700399f5 /tests/auth_tests
parent59841170ba1785ada10a2915b0b60efdb046ee39 (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.py29
-rw-r--r--tests/auth_tests/urls.py9
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),