Fixed #27027 -- Restored Client.force_login() defaulting to the first auth backend.
This commit is contained in:
parent
4f113483d7
commit
fc8f097117
|
@ -626,6 +626,9 @@ class Client(RequestFactory):
|
|||
return False
|
||||
|
||||
def force_login(self, user, backend=None):
|
||||
if backend is None:
|
||||
backend = settings.AUTHENTICATION_BACKENDS[0]
|
||||
user.backend = backend
|
||||
self._login(user, backend)
|
||||
|
||||
def _login(self, user, backend=None):
|
||||
|
|
|
@ -33,3 +33,7 @@ Bugfixes
|
|||
* Prevented the ``migrate`` command from raising
|
||||
``InconsistentMigrationHistory`` in the presence of unapplied squashed
|
||||
migrations (:ticket:`27004`).
|
||||
|
||||
* Fixed a regression in ``Client.force_login()`` which required specifying a
|
||||
``backend`` rather than automatically using the first one if multiple
|
||||
backends are configured (:ticket:`27027`).
|
||||
|
|
|
@ -532,12 +532,30 @@ class ClientTest(TestCase):
|
|||
|
||||
# Log in
|
||||
self.client.force_login(self.u1, backend='test_client.auth_backends.TestClientBackend')
|
||||
self.assertEqual(self.u1.backend, 'test_client.auth_backends.TestClientBackend')
|
||||
|
||||
# Request a page that requires a login
|
||||
response = self.client.get('/login_protected_view/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['user'].username, 'testclient')
|
||||
|
||||
@override_settings(
|
||||
AUTHENTICATION_BACKENDS=[
|
||||
'django.contrib.auth.backends.ModelBackend',
|
||||
'test_client.auth_backends.TestClientBackend',
|
||||
],
|
||||
)
|
||||
def test_force_login_without_backend(self):
|
||||
"""
|
||||
force_login() without passing a backend and with multiple backends
|
||||
configured should automatically use the first backend.
|
||||
"""
|
||||
self.client.force_login(self.u1)
|
||||
response = self.client.get('/login_protected_view/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['user'].username, 'testclient')
|
||||
self.assertEqual(self.u1.backend, 'django.contrib.auth.backends.ModelBackend')
|
||||
|
||||
@override_settings(SESSION_ENGINE="django.contrib.sessions.backends.signed_cookies")
|
||||
def test_logout_cookie_sessions(self):
|
||||
self.test_logout()
|
||||
|
|
Loading…
Reference in New Issue