Convert ACL API tests to use ephimeral models
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -26,7 +26,7 @@ class APIObjectACLListView(generics.ListCreateAPIView):
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_id']
|
||||
)
|
||||
|
||||
if self.request.method == 'GET':
|
||||
@@ -90,7 +90,7 @@ class APIObjectACLView(generics.RetrieveDestroyAPIView):
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_id']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
@@ -121,7 +121,7 @@ class APIObjectACLPermissionListView(generics.ListCreateAPIView):
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_id']
|
||||
)
|
||||
|
||||
if self.request.method == 'GET':
|
||||
@@ -183,7 +183,7 @@ class APIObjectACLPermissionView(generics.RetrieveDestroyAPIView):
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
klass=content_type.model_class(), pk=self.kwargs['object_id']
|
||||
)
|
||||
|
||||
if self.request.method == 'GET':
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from rest_framework import status
|
||||
|
||||
from mayan.apps.documents.permissions import permission_document_view
|
||||
from mayan.apps.documents.tests import DocumentTestMixin
|
||||
from mayan.apps.permissions.tests.literals import TEST_ROLE_LABEL
|
||||
from mayan.apps.rest_api.tests import BaseAPITestCase
|
||||
|
||||
@@ -15,175 +11,8 @@ from ..permissions import permission_acl_edit, permission_acl_view
|
||||
from .mixins import ACLTestMixin
|
||||
|
||||
|
||||
class ACLAPITestCase(ACLTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
def setUp(self):
|
||||
super(ACLAPITestCase, self).setUp()
|
||||
self.test_object = self.test_document
|
||||
self.test_object_content_type = ContentType.objects.get_for_model(
|
||||
self.test_object
|
||||
)
|
||||
|
||||
def test_acl_list_api_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self.get(
|
||||
viewname='rest_api:accesscontrollist-list',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk
|
||||
)
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertContains(
|
||||
response=response, text=self.test_object_content_type.app_label,
|
||||
status_code=200
|
||||
)
|
||||
self.assertContains(
|
||||
response=response, text=self.test_acl.role.label,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def _request_test_acl_delete_api_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:accesscontrollist-detail',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk, self.test_acl.pk
|
||||
)
|
||||
)
|
||||
|
||||
def test_acl_delete_api_view_with_access(self):
|
||||
self.expected_content_type = None
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(self.test_object, permission=permission_acl_edit)
|
||||
|
||||
acl_count = AccessControlList.objects.count()
|
||||
|
||||
response = self._request_test_acl_delete_api_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
|
||||
self.assertEqual(AccessControlList.objects.count(), acl_count - 1)
|
||||
|
||||
def _request_test_acl_detail_api_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:accesscontrollist-detail',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk, self.test_acl.pk
|
||||
)
|
||||
)
|
||||
|
||||
def test_acl_detail_api_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self._request_test_acl_detail_api_view()
|
||||
|
||||
self.assertEqual(
|
||||
response.data['content_type']['app_label'],
|
||||
self.test_object_content_type.app_label
|
||||
)
|
||||
self.assertEqual(
|
||||
response.data['role']['label'], TEST_ROLE_LABEL
|
||||
)
|
||||
|
||||
def _request_test_acl_permission_delete_api_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:accesscontrollist-permission-detail',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk, self.test_acl.pk,
|
||||
self.test_permission.stored_permission.pk
|
||||
)
|
||||
)
|
||||
|
||||
def test_acl_permission_delete_view_with_access(self):
|
||||
self.expected_content_type = None
|
||||
self.test_permission = permission_document_view
|
||||
self._create_test_acl()
|
||||
self.test_acl.permissions.add(self.test_permission.stored_permission)
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_edit)
|
||||
|
||||
response = self._request_test_acl_permission_delete_api_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
|
||||
self.assertEqual(self.test_acl.permissions.count(), 0)
|
||||
|
||||
def _request_test_acl_permission_detail_api_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:accesscontrollist-permission-detail',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk, self.test_acl.pk,
|
||||
self.test_acl.permissions.first().pk
|
||||
)
|
||||
)
|
||||
|
||||
def test_acl_permission_detail_api_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
self.test_acl.permissions.add(permission_document_view.stored_permission)
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self._request_test_acl_permission_detail_api_view()
|
||||
self.assertEqual(
|
||||
response.data['pk'], permission_document_view.pk
|
||||
)
|
||||
|
||||
def _request_test_acl_permission_list_api_get_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:accesscontrollist-permission-list',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk, self.test_acl.pk
|
||||
)
|
||||
)
|
||||
|
||||
def test_acl_permission_list_api_get_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
self.test_acl.permissions.add(permission_document_view.stored_permission)
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self._request_test_acl_permission_list_api_get_view()
|
||||
self.assertEqual(
|
||||
response.data['results'][0]['pk'],
|
||||
permission_document_view.pk
|
||||
)
|
||||
|
||||
def _request_acl_permssion_list_api_post_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:accesscontrollist-permission-list',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk, self.test_acl.pk
|
||||
), data={'permission_pk': self.test_permission.pk}
|
||||
)
|
||||
|
||||
def test_acl_permission_list_api_post_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
self.test_permission = permission_document_view
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_edit)
|
||||
|
||||
response = self._request_acl_permssion_list_api_post_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
|
||||
self.assertTrue(
|
||||
self.test_permission.stored_permission in self.test_acl.permissions.all()
|
||||
)
|
||||
class ACLAPITestCase(ACLTestMixin, BaseAPITestCase):
|
||||
auto_create_test_object = True
|
||||
|
||||
def _request_acl_create_api_view(self, extra_data=None):
|
||||
data = {'role_pk': self.test_role.pk}
|
||||
@@ -193,11 +22,7 @@ class ACLAPITestCase(ACLTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
return self.post(
|
||||
viewname='rest_api:accesscontrollist-list',
|
||||
args=(
|
||||
self.test_object_content_type.app_label,
|
||||
self.test_object_content_type.model,
|
||||
self.test_object.pk
|
||||
), data=data
|
||||
kwargs=self.test_content_object_view_kwargs, data=data
|
||||
)
|
||||
|
||||
def test_acl_create_api_api_view_with_access(self):
|
||||
@@ -239,3 +64,162 @@ class ACLAPITestCase(ACLTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
test_object_acl.permissions.first(),
|
||||
permission_acl_view.stored_permission
|
||||
)
|
||||
|
||||
def _request_test_acl_delete_api_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:accesscontrollist-detail', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk,
|
||||
'pk': self.test_acl.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_acl_delete_api_view_with_access(self):
|
||||
self.expected_content_type = None
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(self.test_object, permission=permission_acl_edit)
|
||||
|
||||
acl_count = AccessControlList.objects.count()
|
||||
|
||||
response = self._request_test_acl_delete_api_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
|
||||
self.assertEqual(AccessControlList.objects.count(), acl_count - 1)
|
||||
|
||||
def _request_test_acl_permission_delete_api_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:accesscontrollist-permission-detail', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk,
|
||||
'pk': self.test_acl.pk,
|
||||
'permission_pk': self.test_permission.stored_permission.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_acl_permission_delete_view_with_access(self):
|
||||
self.expected_content_type = None
|
||||
self._create_test_acl()
|
||||
self.test_acl.permissions.add(self.test_permission.stored_permission)
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_edit)
|
||||
|
||||
response = self._request_test_acl_permission_delete_api_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
|
||||
self.assertEqual(self.test_acl.permissions.count(), 0)
|
||||
|
||||
def test_acl_detail_api_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self._request_test_acl_detail_api_view()
|
||||
|
||||
self.assertEqual(
|
||||
response.data['content_type']['app_label'],
|
||||
self.test_object_content_type.app_label
|
||||
)
|
||||
self.assertEqual(
|
||||
response.data['role']['label'], TEST_ROLE_LABEL
|
||||
)
|
||||
|
||||
def _request_test_acl_permission_detail_api_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:accesscontrollist-permission-detail', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk,
|
||||
'pk': self.test_acl.pk,
|
||||
'permission_pk': self.test_acl.permissions.first().pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_acl_permission_detail_api_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
self.test_acl.permissions.add(self.test_permission.stored_permission)
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self._request_test_acl_permission_detail_api_view()
|
||||
self.assertEqual(
|
||||
response.data['pk'], self.test_permission.pk
|
||||
)
|
||||
|
||||
def test_acl_list_api_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self.get(
|
||||
viewname='rest_api:accesscontrollist-list', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk
|
||||
}
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertContains(
|
||||
response=response, text=self.test_object_content_type.app_label,
|
||||
status_code=200
|
||||
)
|
||||
self.assertContains(
|
||||
response=response, text=self.test_acl.role.label,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def _request_test_acl_detail_api_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:accesscontrollist-detail', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk,
|
||||
'pk': self.test_acl.pk
|
||||
}
|
||||
)
|
||||
|
||||
def _request_test_acl_permission_list_api_get_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:accesscontrollist-permission-list', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk,
|
||||
'pk': self.test_acl.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_acl_permission_list_api_get_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
self.test_acl.permissions.add(self.test_permission.stored_permission)
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_view)
|
||||
|
||||
response = self._request_test_acl_permission_list_api_get_view()
|
||||
self.assertEqual(
|
||||
response.data['results'][0]['pk'],
|
||||
self.test_permission.pk
|
||||
)
|
||||
|
||||
def _request_acl_permssion_list_api_post_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:accesscontrollist-permission-list', kwargs={
|
||||
'app_label': self.test_object_content_type.app_label,
|
||||
'model': self.test_object_content_type.model,
|
||||
'object_id': self.test_object.pk,
|
||||
'pk': self.test_acl.pk
|
||||
}, data={'permission_pk': self.test_permission.pk}
|
||||
)
|
||||
|
||||
def test_acl_permission_list_api_post_view_with_access(self):
|
||||
self._create_test_acl()
|
||||
|
||||
self.grant_access(obj=self.test_object, permission=permission_acl_edit)
|
||||
|
||||
response = self._request_acl_permssion_list_api_post_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
|
||||
self.assertTrue(
|
||||
self.test_permission.stored_permission in self.test_acl.permissions.all()
|
||||
)
|
||||
|
||||
@@ -31,20 +31,20 @@ urlpatterns = [
|
||||
|
||||
api_urls = [
|
||||
url(
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_pk>\d+)/acls/$',
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/acls/$',
|
||||
view=APIObjectACLListView.as_view(), name='accesscontrollist-list'
|
||||
),
|
||||
url(
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_pk>\d+)/acls/(?P<pk>\d+)/$',
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/acls/(?P<pk>\d+)/$',
|
||||
view=APIObjectACLView.as_view(), name='accesscontrollist-detail'
|
||||
),
|
||||
url(
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_pk>\d+)/acls/(?P<pk>\d+)/permissions/$',
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/acls/(?P<pk>\d+)/permissions/$',
|
||||
view=APIObjectACLPermissionListView.as_view(),
|
||||
name='accesscontrollist-permission-list'
|
||||
),
|
||||
url(
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_pk>\d+)/acls/(?P<pk>\d+)/permissions/(?P<permission_pk>\d+)/$',
|
||||
regex=r'^objects/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/acls/(?P<pk>\d+)/permissions/(?P<permission_pk>\d+)/$',
|
||||
view=APIObjectACLPermissionView.as_view(),
|
||||
name='accesscontrollist-permission-detail'
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user