mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #13190 -- Improved error handling for the case where no authentication backends are defined. Thanks to Joel3000 for the report, and Łukasz Rekucki for the final patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14793 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -37,6 +37,8 @@ def get_backends(): | ||||
|     backends = [] | ||||
|     for backend_path in settings.AUTHENTICATION_BACKENDS: | ||||
|         backends.append(load_backend(backend_path)) | ||||
|     if not backends: | ||||
|         raise ImproperlyConfigured('No authentication backends have been defined. Does AUTHENTICATION_BACKENDS contain anything?') | ||||
|     return backends | ||||
|  | ||||
| def authenticate(**credentials): | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| from django.contrib.auth.tests.auth_backends import BackendTest, RowlevelBackendTest, AnonymousUserBackendTest, NoAnonymousUserBackendTest | ||||
| from django.contrib.auth.tests.auth_backends import BackendTest, RowlevelBackendTest, AnonymousUserBackendTest, NoAnonymousUserBackendTest, NoBackendsTest | ||||
| from django.contrib.auth.tests.basic import BasicTestCase | ||||
| from django.contrib.auth.tests.decorators import LoginRequiredTestCase | ||||
| from django.contrib.auth.tests.forms import UserCreationFormTest, AuthenticationFormTest, SetPasswordFormTest, PasswordChangeFormTest, UserChangeFormTest, PasswordResetFormTest | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import warnings | ||||
| from django.conf import settings | ||||
| from django.contrib.auth.models import User, Group, Permission, AnonymousUser | ||||
| from django.contrib.contenttypes.models import ContentType | ||||
| from django.core.exceptions import ImproperlyConfigured | ||||
| from django.test import TestCase | ||||
|  | ||||
|  | ||||
| @@ -251,3 +252,18 @@ class NoAnonymousUserBackendTest(TestCase): | ||||
|  | ||||
|     def test_get_all_permissions(self): | ||||
|         self.assertEqual(self.user1.get_all_permissions(TestObj()), set()) | ||||
|  | ||||
| class NoBackendsTest(TestCase): | ||||
|     """ | ||||
|     Tests that an appropriate error is raised if no auth backends are provided. | ||||
|     """ | ||||
|     def setUp(self): | ||||
|         self.old_AUTHENTICATION_BACKENDS = settings.AUTHENTICATION_BACKENDS | ||||
|         settings.AUTHENTICATION_BACKENDS = [] | ||||
|         self.user = User.objects.create_user('test', 'test@example.com', 'test') | ||||
|  | ||||
|     def tearDown(self): | ||||
|         settings.AUTHENTICATION_BACKENDS = self.old_AUTHENTICATION_BACKENDS | ||||
|  | ||||
|     def test_raises_exception(self): | ||||
|         self.assertRaises(ImproperlyConfigured, self.user.has_perm, ('perm', TestObj(),)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user