diff options
| author | Joshua Cannon <joshua.cannon@ni.com> | 2018-12-13 10:14:03 -0600 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2019-01-09 20:01:04 -0500 |
| commit | db1b10ef0dcab2b8bacbea4adc681a57bd70b462 (patch) | |
| tree | 98e5de16c2ba4a77d52bb0fc61c3b9b2da2f0473 /tests/auth_tests/test_remote_user_deprecation.py | |
| parent | 4ca2820ff573ed87c70fedda69efa8de23955669 (diff) | |
Fixed #30037 -- Added request arg to RemoteUserBackend.configure_user().
Diffstat (limited to 'tests/auth_tests/test_remote_user_deprecation.py')
| -rw-r--r-- | tests/auth_tests/test_remote_user_deprecation.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/auth_tests/test_remote_user_deprecation.py b/tests/auth_tests/test_remote_user_deprecation.py new file mode 100644 index 0000000000..1b31d9f038 --- /dev/null +++ b/tests/auth_tests/test_remote_user_deprecation.py @@ -0,0 +1,50 @@ +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') |
