summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Nester <andrew.nester.dev@gmail.com>2016-07-20 19:32:19 +0300
committerTim Graham <timograham@gmail.com>2016-07-22 15:04:13 -0400
commitdde6288fbe97c7053e67b613fec3366f3c298cf4 (patch)
tree304b68bdb5ede6898a0fe14bfdb92afa236c0cc2
parentcaa006f3275b8bdd1b26656291aa55ef6465ce61 (diff)
Fixed #26882 -- Added tests for auth.views.logout_then_login().
-rw-r--r--django/contrib/auth/views.py2
-rw-r--r--tests/auth_tests/test_views.py30
2 files changed, 30 insertions, 2 deletions
diff --git a/django/contrib/auth/views.py b/django/contrib/auth/views.py
index 8b4c1d6fdb..12bb666dec 100644
--- a/django/contrib/auth/views.py
+++ b/django/contrib/auth/views.py
@@ -185,7 +185,7 @@ def logout_then_login(request, login_url=None, extra_context=None):
if not login_url:
login_url = settings.LOGIN_URL
login_url = resolve_url(login_url)
- return logout(request, login_url, extra_context=extra_context)
+ return LogoutView.as_view(next_page=login_url)(request)
def redirect_to_login(next, login_url=None,
diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py
index bd01c67d70..32c51e41a0 100644
--- a/tests/auth_tests/test_views.py
+++ b/tests/auth_tests/test_views.py
@@ -15,7 +15,9 @@ from django.contrib.auth.forms import (
AuthenticationForm, PasswordChangeForm, SetPasswordForm,
)
from django.contrib.auth.models import User
-from django.contrib.auth.views import LoginView, redirect_to_login
+from django.contrib.auth.views import (
+ LoginView, logout_then_login, redirect_to_login,
+)
from django.contrib.sessions.middleware import SessionMiddleware
from django.contrib.sites.requests import RequestSite
from django.core import mail
@@ -707,6 +709,32 @@ class RedirectToLoginTests(AuthViewsTestCase):
self.assertEqual(expected, login_redirect_response.url)
+class LogoutThenLoginTests(AuthViewsTestCase):
+ """Tests for the logout_then_login view"""
+
+ def confirm_logged_out(self):
+ self.assertNotIn(SESSION_KEY, self.client.session)
+
+ @override_settings(LOGIN_URL='/login/')
+ def test_default_logout_then_login(self):
+ self.login()
+ req = HttpRequest()
+ req.method = 'GET'
+ req.session = self.client.session
+ response = logout_then_login(req)
+ self.confirm_logged_out()
+ self.assertRedirects(response, '/login/', fetch_redirect_response=False)
+
+ def test_logout_then_login_with_custom_login(self):
+ self.login()
+ req = HttpRequest()
+ req.method = 'GET'
+ req.session = self.client.session
+ response = logout_then_login(req, login_url='/custom/')
+ self.confirm_logged_out()
+ self.assertRedirects(response, '/custom/', fetch_redirect_response=False)
+
+
class LoginRedirectAuthenticatedUser(AuthViewsTestCase):
dont_redirect_url = '/login/redirect_authenticated_user_default/'
do_redirect_url = '/login/redirect_authenticated_user/'