diff options
| author | Xavier Fernandez <xavier.fernandez@polyconseil.fr> | 2014-06-06 11:19:16 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-06-16 08:29:52 -0400 |
| commit | 183e9d20294dec28df8ae5ea8ed7acc712adcd2b (patch) | |
| tree | 7b98feb52f9b6c48fc1d27b9795e322943c66aa4 /tests | |
| parent | d4305a15c1d48a0248ce1da1989a145009029e6c (diff) | |
[1.7.x] Fixed #22771 -- Fixed test.Client.logout when using custom auth backend.
Backport of 50b9313e0a from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_client_regress/auth_backends.py | 20 | ||||
| -rw-r--r-- | tests/test_client_regress/tests.py | 19 |
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/test_client_regress/auth_backends.py b/tests/test_client_regress/auth_backends.py new file mode 100644 index 0000000000..02a6d39611 --- /dev/null +++ b/tests/test_client_regress/auth_backends.py @@ -0,0 +1,20 @@ +from django.contrib.auth.backends import ModelBackend + +from .models import CustomUser + + +class CustomUserBackend(ModelBackend): + + def authenticate(self, username=None, password=None): + try: + user = CustomUser.custom_objects.get_by_natural_key(username) + if user.check_password(password): + return user + except CustomUser.DoesNotExist: + return None + + def get_user(self, user_id): + try: + return CustomUser.custom_objects.get(pk=user_id) + except CustomUser.DoesNotExist: + return None diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py index 996f70b667..604b07624f 100644 --- a/tests/test_client_regress/tests.py +++ b/tests/test_client_regress/tests.py @@ -1052,6 +1052,25 @@ class SessionTests(TestCase): user_logged_out.disconnect(listener) self.assertTrue(listener.executed) + @override_settings(AUTHENTICATION_BACKENDS=( + 'django.contrib.auth.backends.ModelBackend', + 'test_client_regress.auth_backends.CustomUserBackend')) + def test_logout_with_custom_auth_backend(self): + "Request a logout after logging in with custom authentication backend" + def listener(*args, **kwargs): + self.assertEqual(kwargs['sender'], CustomUser) + listener.executed = True + listener.executed = False + u = CustomUser.custom_objects.create(email='test@test.com') + u.set_password('password') + u.save() + + user_logged_out.connect(listener) + self.client.login(username='test@test.com', password='password') + self.client.logout() + user_logged_out.disconnect(listener) + self.assertTrue(listener.executed) + def test_logout_without_user(self): """Logout should send signal even if user not authenticated.""" def listener(user, *args, **kwargs): |
