New way to test orphan objects
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -12,12 +12,6 @@ class ModelPermission(object):
|
|||||||
_proxies = {}
|
_proxies = {}
|
||||||
_registry = {}
|
_registry = {}
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def clear(cls):
|
|
||||||
cls._inheritances = {}
|
|
||||||
cls._proxies = {}
|
|
||||||
cls._registry = {}
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def register(cls, model, permissions):
|
def register(cls, model, permissions):
|
||||||
from django.contrib.contenttypes.fields import GenericRelation
|
from django.contrib.contenttypes.fields import GenericRelation
|
||||||
|
|||||||
@@ -36,9 +36,6 @@ class ACLTestMixin(PermissionTestMixin, RoleTestMixin, TestModelTestMixin):
|
|||||||
auto_create_test_role = True
|
auto_create_test_role = True
|
||||||
auto_create_test_object = False
|
auto_create_test_object = False
|
||||||
|
|
||||||
def _clear_model_permissions(self):
|
|
||||||
ModelPermission.clear()
|
|
||||||
|
|
||||||
def _create_test_acl(self):
|
def _create_test_acl(self):
|
||||||
self.test_acl = AccessControlList.objects.create(
|
self.test_acl = AccessControlList.objects.create(
|
||||||
content_object=self.test_object, role=self.test_role
|
content_object=self.test_object, role=self.test_role
|
||||||
@@ -63,9 +60,10 @@ class ACLTestMixin(PermissionTestMixin, RoleTestMixin, TestModelTestMixin):
|
|||||||
'object_id': self.test_object.pk
|
'object_id': self.test_object.pk
|
||||||
}
|
}
|
||||||
|
|
||||||
def _setup_test_object(self):
|
def _setup_test_object(self, register_model_permissions=True):
|
||||||
self._create_test_model()
|
self._create_test_model()
|
||||||
self._create_test_object()
|
self._create_test_object()
|
||||||
|
if register_model_permissions:
|
||||||
ModelPermission.register(
|
ModelPermission.register(
|
||||||
model=self.test_object._meta.model, permissions=(
|
model=self.test_object._meta.model, permissions=(
|
||||||
permission_acl_edit, permission_acl_view,
|
permission_acl_edit, permission_acl_view,
|
||||||
@@ -73,6 +71,8 @@ class ACLTestMixin(PermissionTestMixin, RoleTestMixin, TestModelTestMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self._create_test_permission()
|
self._create_test_permission()
|
||||||
|
|
||||||
|
if register_model_permissions:
|
||||||
ModelPermission.register(
|
ModelPermission.register(
|
||||||
model=self.test_object._meta.model, permissions=(
|
model=self.test_object._meta.model, permissions=(
|
||||||
self.test_permission,
|
self.test_permission,
|
||||||
|
|||||||
@@ -9,10 +9,6 @@ from .mixins import ACLTestMixin
|
|||||||
|
|
||||||
|
|
||||||
class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
||||||
def setUp(self):
|
|
||||||
super(AccessControlListViewTestCase, self).setUp()
|
|
||||||
self._setup_test_object()
|
|
||||||
|
|
||||||
def _request_test_acl_create_get_view(self):
|
def _request_test_acl_create_get_view(self):
|
||||||
return self.get(
|
return self.get(
|
||||||
viewname='acls:acl_create',
|
viewname='acls:acl_create',
|
||||||
@@ -22,6 +18,8 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_acl_create_get_view_no_permission(self):
|
def test_acl_create_get_view_no_permission(self):
|
||||||
|
self._setup_test_object()
|
||||||
|
|
||||||
acl_count = AccessControlList.objects.count()
|
acl_count = AccessControlList.objects.count()
|
||||||
|
|
||||||
response = self._request_test_acl_create_get_view()
|
response = self._request_test_acl_create_get_view()
|
||||||
@@ -30,6 +28,8 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
self.assertEqual(AccessControlList.objects.count(), acl_count)
|
self.assertEqual(AccessControlList.objects.count(), acl_count)
|
||||||
|
|
||||||
def test_acl_create_get_view_with_access(self):
|
def test_acl_create_get_view_with_access(self):
|
||||||
|
self._setup_test_object()
|
||||||
|
|
||||||
self.grant_access(
|
self.grant_access(
|
||||||
obj=self.test_object, permission=permission_acl_edit
|
obj=self.test_object, permission=permission_acl_edit
|
||||||
)
|
)
|
||||||
@@ -49,6 +49,8 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_acl_create_view_post_no_permission(self):
|
def test_acl_create_view_post_no_permission(self):
|
||||||
|
self._setup_test_object()
|
||||||
|
|
||||||
acl_count = AccessControlList.objects.count()
|
acl_count = AccessControlList.objects.count()
|
||||||
|
|
||||||
response = self._request_test_acl_create_post_view()
|
response = self._request_test_acl_create_post_view()
|
||||||
@@ -57,6 +59,8 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
self.assertEqual(AccessControlList.objects.count(), acl_count)
|
self.assertEqual(AccessControlList.objects.count(), acl_count)
|
||||||
|
|
||||||
def test_acl_create_view_post_with_access(self):
|
def test_acl_create_view_post_with_access(self):
|
||||||
|
self._setup_test_object()
|
||||||
|
|
||||||
self.grant_access(
|
self.grant_access(
|
||||||
obj=self.test_object, permission=permission_acl_edit
|
obj=self.test_object, permission=permission_acl_edit
|
||||||
)
|
)
|
||||||
@@ -73,9 +77,9 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
Test creating an ACL entry for an object with no model permissions.
|
Test creating an ACL entry for an object with no model permissions.
|
||||||
Result: Should display a blank permissions list (not optgroup)
|
Result: Should display a blank permissions list (not optgroup)
|
||||||
"""
|
"""
|
||||||
self.grant_permission(permission=permission_acl_edit)
|
self._setup_test_object(register_model_permissions=False)
|
||||||
|
|
||||||
self._clear_model_permissions()
|
self.grant_permission(permission=permission_acl_edit)
|
||||||
|
|
||||||
response = self.post(
|
response = self.post(
|
||||||
viewname='acls:acl_create',
|
viewname='acls:acl_create',
|
||||||
@@ -90,6 +94,8 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
self.assertEqual(AccessControlList.objects.count(), 1)
|
self.assertEqual(AccessControlList.objects.count(), 1)
|
||||||
|
|
||||||
def test_acl_list_view_no_permission(self):
|
def test_acl_list_view_no_permission(self):
|
||||||
|
self._setup_test_object()
|
||||||
|
|
||||||
self._create_test_acl()
|
self._create_test_acl()
|
||||||
|
|
||||||
response = self.get(
|
response = self.get(
|
||||||
@@ -99,6 +105,8 @@ class AccessControlListViewTestCase(ACLTestMixin, GenericViewTestCase):
|
|||||||
self.assertEqual(response.status_code, 403)
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
def test_acl_list_view_with_permission(self):
|
def test_acl_list_view_with_permission(self):
|
||||||
|
self._setup_test_object()
|
||||||
|
|
||||||
self.grant_access(
|
self.grant_access(
|
||||||
obj=self.test_object, permission=permission_acl_view
|
obj=self.test_object, permission=permission_acl_view
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user