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:
parent
b5754e60b4
commit
34a386378f
|
@ -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(),))
|
||||
|
|
Loading…
Reference in New Issue