mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Refs #28207 -- Fixed contrib.auth.authenticate() if 'backend' is in the credentials.
Regression in 3008f30f19.
			
			
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							266b243168
						
					
				
				
					commit
					a3ba2662cd
				
			| @@ -4,6 +4,7 @@ from django.contrib.auth import authenticate | ||||
| from django.test import SimpleTestCase, override_settings | ||||
|  | ||||
| mock_request = object() | ||||
| mock_backend = object() | ||||
|  | ||||
|  | ||||
| class NoRequestBackend: | ||||
| @@ -19,6 +20,14 @@ class RequestNotPositionArgBackend: | ||||
|         assert request is mock_request | ||||
|  | ||||
|  | ||||
| class RequestNotPositionArgWithUsedKwargBackend: | ||||
|     def authenticate(self, username=None, password=None, request=None, backend=None): | ||||
|         assert username == 'username' | ||||
|         assert password == 'pass' | ||||
|         assert request is mock_request | ||||
|         assert backend is mock_backend | ||||
|  | ||||
|  | ||||
| class AcceptsRequestBackendTest(SimpleTestCase): | ||||
|     """ | ||||
|     A deprecation warning is shown for backends that have an authenticate() | ||||
| @@ -26,6 +35,7 @@ class AcceptsRequestBackendTest(SimpleTestCase): | ||||
|     """ | ||||
|     no_request_backend = '%s.NoRequestBackend' % __name__ | ||||
|     request_not_positional_backend = '%s.RequestNotPositionArgBackend' % __name__ | ||||
|     request_not_positional_with_used_kwarg_backend = '%s.RequestNotPositionArgWithUsedKwargBackend' % __name__ | ||||
|  | ||||
|     @override_settings(AUTHENTICATION_BACKENDS=[no_request_backend]) | ||||
|     def test_no_request_deprecation_warning(self): | ||||
| @@ -68,3 +78,15 @@ class AcceptsRequestBackendTest(SimpleTestCase): | ||||
|             "Update %s.authenticate() to accept a positional `request` " | ||||
|             "argument." % self.no_request_backend | ||||
|         ) | ||||
|  | ||||
|     @override_settings(AUTHENTICATION_BACKENDS=[request_not_positional_with_used_kwarg_backend]) | ||||
|     def test_handles_backend_in_kwargs(self): | ||||
|         with warnings.catch_warnings(record=True) as warns: | ||||
|             warnings.simplefilter('always') | ||||
|             authenticate(username='username', password='pass', request=mock_request, backend=mock_backend) | ||||
|         self.assertEqual(len(warns), 1) | ||||
|         self.assertEqual( | ||||
|             str(warns[0].message), | ||||
|             "In %s.authenticate(), move the `request` keyword argument to the " | ||||
|             "first positional argument." % self.request_not_positional_with_used_kwarg_backend | ||||
|         ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user