mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
add failing test for OR with unimplemented has_object_permission
The previous test ensured that a permission whose has_permission returned False but didn't implement has_object_permission didn't cause an OR to suceed regardless of other conditions. However, if a permission doesn't implement has_object_permission but has_permission returns True, that should count as having permission on all objects.
This commit is contained in:
parent
95f972793b
commit
0edc4d776b
|
@ -528,6 +528,12 @@ class PermissionsCompositionTests(TestCase):
|
||||||
self.password
|
self.password
|
||||||
)
|
)
|
||||||
self.client.login(username=self.username, password=self.password)
|
self.client.login(username=self.username, password=self.password)
|
||||||
|
self.admin_user = User.objects.create_user(
|
||||||
|
'paul',
|
||||||
|
'mccartney@thebeatles.com',
|
||||||
|
'password',
|
||||||
|
is_staff=True,
|
||||||
|
)
|
||||||
|
|
||||||
def test_and_false(self):
|
def test_and_false(self):
|
||||||
request = factory.get('/1', format='json')
|
request = factory.get('/1', format='json')
|
||||||
|
@ -685,7 +691,7 @@ class PermissionsCompositionTests(TestCase):
|
||||||
assert composed_perm().has_permission(request, None) is NotImplemented
|
assert composed_perm().has_permission(request, None) is NotImplemented
|
||||||
assert composed_perm().has_object_permission(request, None, None) is True
|
assert composed_perm().has_object_permission(request, None, None) is True
|
||||||
|
|
||||||
def test_has_object_permission_not_implemented(self):
|
def test_has_object_permission_not_implemented_false(self):
|
||||||
request = factory.get('/1', format='json')
|
request = factory.get('/1', format='json')
|
||||||
request.user = self.user
|
request.user = self.user
|
||||||
composed_perm = (
|
composed_perm = (
|
||||||
|
@ -695,3 +701,12 @@ class PermissionsCompositionTests(TestCase):
|
||||||
assert composed_perm().has_permission(request, None) is False
|
assert composed_perm().has_permission(request, None) is False
|
||||||
assert composed_perm().has_object_permission(request, None, None) is False
|
assert composed_perm().has_object_permission(request, None, None) is False
|
||||||
|
|
||||||
|
def test_has_object_permission_not_implemented_true(self):
|
||||||
|
request = factory.get('/1', format='json')
|
||||||
|
request.user = self.admin_user
|
||||||
|
composed_perm = (
|
||||||
|
permissions.IsAdminUser |
|
||||||
|
BasicObjectPerm
|
||||||
|
)
|
||||||
|
assert composed_perm().has_permission(request, None) is True
|
||||||
|
assert composed_perm().has_object_permission(request, None, None) is True
|
||||||
|
|
Loading…
Reference in New Issue
Block a user