django/tests/auth_tests/test_auth_backends_deprecat...

31 lines
1.0 KiB
Python

import warnings
from django.contrib.auth import authenticate
from django.test import SimpleTestCase, override_settings
class NoRequestBackend(object):
def authenticate(self, username=None, password=None):
# Doesn't accept a request parameter.
pass
class AcceptsRequestBackendTest(SimpleTestCase):
"""
A deprecation warning is shown for backends that have an authenticate()
method without a request parameter.
"""
no_request_backend = '%s.NoRequestBackend' % __name__
@override_settings(AUTHENTICATION_BACKENDS=[no_request_backend])
def test_no_request_deprecation_warning(self):
with warnings.catch_warnings(record=True) as warns:
warnings.simplefilter('always')
authenticate(username='test', password='test')
self.assertEqual(len(warns), 1)
self.assertEqual(
str(warns[0].message),
"Update authentication backend %s to accept a positional `request` "
"argument." % self.no_request_backend
)