mirror of
https://github.com/jazzband/django-authority.git
synced 2026-03-16 22:20:28 +00:00
parent
1866f087b2
commit
06905e90c4
3 changed files with 69 additions and 1 deletions
|
|
@ -16,5 +16,29 @@
|
|||
"email": "",
|
||||
"date_joined": "2009-11-02 03:06:19"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "auth.group",
|
||||
"fields": {
|
||||
"name": "Test Group 1",
|
||||
"permissions": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 2,
|
||||
"model": "auth.group",
|
||||
"fields": {
|
||||
"name": "Test Group 2",
|
||||
"permissions": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 3,
|
||||
"model": "auth.group",
|
||||
"fields": {
|
||||
"name": "Test Group 3",
|
||||
"permissions": []
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ class BasePermission(object):
|
|||
try:
|
||||
perm = Permission.objects.get(
|
||||
user=self.user,
|
||||
group=self.group,
|
||||
codename=codename,
|
||||
approved=True,
|
||||
content_type=content_type,
|
||||
|
|
@ -342,6 +343,7 @@ class BasePermission(object):
|
|||
except Permission.DoesNotExist:
|
||||
perm = Permission.objects.create(
|
||||
user=self.user,
|
||||
group=self.group,
|
||||
content_object=content_object,
|
||||
codename=codename,
|
||||
approved=True,
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import Permission as DjangoPermission
|
||||
from django.contrib.auth.models import Group
|
||||
from django.test import TestCase
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import MultipleObjectsReturned
|
||||
from django.db.models import Q
|
||||
from django.test import TestCase
|
||||
|
||||
import authority
|
||||
from authority import permissions
|
||||
|
|
@ -94,6 +95,9 @@ class AssignBehaviourTest(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.user = User.objects.get(QUERY)
|
||||
self.group1 = Group.objects.get(name='Test Group 1')
|
||||
self.group2 = Group.objects.get(name='Test Group 2')
|
||||
self.group3 = Group.objects.get(name='Test Group 2')
|
||||
self.check = UserPermission(self.user)
|
||||
|
||||
def test_add(self):
|
||||
|
|
@ -102,6 +106,44 @@ class AssignBehaviourTest(TestCase):
|
|||
self.assertTrue(isinstance(result[0], DjangoPermission))
|
||||
self.assertTrue(self.check.add_user())
|
||||
|
||||
def test_assign_to_group(self):
|
||||
result = UserPermission(group=self.group1).assign(
|
||||
check='delete_user', content_object=self.user)
|
||||
|
||||
self.assertIsInstance(result, list)
|
||||
self.assertIsInstance(result[0], Permission)
|
||||
self.assertTrue(
|
||||
UserPermission(group=self.group1).delete_user(self.user)
|
||||
)
|
||||
|
||||
def test_assign_to_group_does_not_overwrite_other_group_permission(self):
|
||||
UserPermission(group=self.group1).assign(
|
||||
check='delete_user', content_object=self.user)
|
||||
UserPermission(group=self.group2).assign(
|
||||
check='delete_user', content_object=self.user)
|
||||
self.assertTrue(
|
||||
UserPermission(group=self.group2).delete_user(self.user)
|
||||
)
|
||||
self.assertTrue(
|
||||
UserPermission(group=self.group1).delete_user(self.user)
|
||||
)
|
||||
|
||||
def test_assign_to_group_does_not_fail_when_two_group_perms_exist(self):
|
||||
for group in self.group1, self.group2:
|
||||
perm = Permission(
|
||||
group=group,
|
||||
content_object=self.user,
|
||||
codename='user_permission.delete_user',
|
||||
approved=True
|
||||
)
|
||||
perm.save()
|
||||
|
||||
try:
|
||||
UserPermission(group=self.group3).assign(
|
||||
check='delete_user', content_object=self.user)
|
||||
except MultipleObjectsReturned:
|
||||
self.fail("assign() should not have raised this exception")
|
||||
|
||||
def test_delete(self):
|
||||
result = self.check.assign(content_object=self.user, check="delete_user",)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue