|
@@ -1,3 +1,6 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+from __future__ import unicode_literals
|
|
|
+
|
|
|
from importlib import import_module
|
|
|
import itertools
|
|
|
import re
|
|
@@ -10,9 +13,9 @@ from django.contrib.auth import SESSION_KEY, REDIRECT_FIELD_NAME
|
|
|
from django.contrib.auth.forms import (AuthenticationForm, PasswordChangeForm,
|
|
|
SetPasswordForm)
|
|
|
from django.contrib.auth.models import User
|
|
|
-from django.contrib.auth.views import login as login_view
|
|
|
+from django.contrib.auth.views import login as login_view, redirect_to_login
|
|
|
from django.core import mail
|
|
|
-from django.core.urlresolvers import reverse, NoReverseMatch
|
|
|
+from django.core.urlresolvers import NoReverseMatch, reverse, reverse_lazy
|
|
|
from django.http import QueryDict, HttpRequest
|
|
|
from django.utils.deprecation import RemovedInDjango20Warning
|
|
|
from django.utils.encoding import force_text
|
|
@@ -648,6 +651,10 @@ class LoginURLSettings(AuthViewsTestCase):
|
|
|
expected = 'http://remote.example.com/login/?next=%s' % quoted_next
|
|
|
self.assertLoginURLEquals(expected)
|
|
|
|
|
|
+ @override_settings(LOGIN_URL=reverse_lazy('login'))
|
|
|
+ def test_lazy_login_url(self):
|
|
|
+ self.assertLoginURLEquals('/login/?next=/login_required/')
|
|
|
+
|
|
|
|
|
|
@skipIfCustomUser
|
|
|
class LoginRedirectUrlTest(AuthViewsTestCase):
|
|
@@ -673,6 +680,21 @@ class LoginRedirectUrlTest(AuthViewsTestCase):
|
|
|
self.assertLoginRedirectURLEqual('http://remote.example.com/welcome/')
|
|
|
|
|
|
|
|
|
+class RedirectToLoginTests(AuthViewsTestCase):
|
|
|
+ """Tests for the redirect_to_login view"""
|
|
|
+ @override_settings(LOGIN_URL=reverse_lazy('login'))
|
|
|
+ def test_redirect_to_login_with_lazy(self):
|
|
|
+ login_redirect_response = redirect_to_login(next='/else/where/')
|
|
|
+ expected = '/login/?next=/else/where/'
|
|
|
+ self.assertEqual(expected, login_redirect_response.url)
|
|
|
+
|
|
|
+ @override_settings(LOGIN_URL=reverse_lazy('login'))
|
|
|
+ def test_redirect_to_login_with_lazy_and_unicode(self):
|
|
|
+ login_redirect_response = redirect_to_login(next='/else/where/झ/')
|
|
|
+ expected = '/login/?next=/else/where/%E0%A4%9D/'
|
|
|
+ self.assertEqual(expected, login_redirect_response.url)
|
|
|
+
|
|
|
+
|
|
|
@skipIfCustomUser
|
|
|
class LogoutTest(AuthViewsTestCase):
|
|
|
|