1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import warnings
- from django.contrib.auth.backends import RemoteUserBackend
- from django.contrib.auth.models import User
- from django.test import TestCase, modify_settings, override_settings
- class CustomRemoteUserBackend(RemoteUserBackend):
- """Override configure_user() without a request argument."""
- def configure_user(self, user):
- user.email = 'user@example.com'
- user.save()
- return user
- @override_settings(ROOT_URLCONF='auth_tests.urls')
- class RemoteUserCustomTest(TestCase):
- middleware = 'django.contrib.auth.middleware.RemoteUserMiddleware'
- backend = 'auth_tests.test_remote_user_deprecation.CustomRemoteUserBackend'
- header = 'REMOTE_USER'
- def setUp(self):
- self.patched_settings = modify_settings(
- AUTHENTICATION_BACKENDS={'append': self.backend},
- MIDDLEWARE={'append': self.middleware},
- )
- self.patched_settings.enable()
- def tearDown(self):
- self.patched_settings.disable()
- def test_configure_user_deprecation_warning(self):
- """
- A deprecation warning is shown for RemoteUserBackend that have a
- configure_user() method without a request parameter.
- """
- num_users = User.objects.count()
- with warnings.catch_warnings(record=True) as warns:
- warnings.simplefilter('always')
- response = self.client.get('/remote_user/', **{self.header: 'newuser'})
- self.assertEqual(response.context['user'].username, 'newuser')
- self.assertEqual(len(warns), 1)
- self.assertEqual(
- str(warns[0].message),
- 'Update CustomRemoteUserBackend.configure_user() to accept '
- '`request` as the first argument.'
- )
- self.assertEqual(User.objects.count(), num_users + 1)
- user = User.objects.get(username='newuser')
- self.assertEqual(user.email, 'user@example.com')
|