From 042cef3d0e1d6c14267d7d2da5e96af728ca68a3 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 18 Mar 2016 20:57:22 -0400 Subject: [PATCH] Add ACL view tests. --- mayan/apps/acls/tests/test_views.py | 83 +++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 mayan/apps/acls/tests/test_views.py diff --git a/mayan/apps/acls/tests/test_views.py b/mayan/apps/acls/tests/test_views.py new file mode 100644 index 0000000000..7affe9ac7e --- /dev/null +++ b/mayan/apps/acls/tests/test_views.py @@ -0,0 +1,83 @@ +from __future__ import absolute_import, unicode_literals + +from django.contrib.contenttypes.models import ContentType + +from documents.permissions import permission_document_view +from documents.tests.test_views import GenericDocumentViewTestCase +from user_management.tests import ( + TEST_USER_USERNAME, TEST_USER_PASSWORD +) + +from ..models import AccessControlList +from ..permissions import permission_acl_edit, permission_acl_view + + +class AccessControlListViewTestCase(GenericDocumentViewTestCase): + def setUp(self): + super(AccessControlListViewTestCase, self).setUp() + + content_type = ContentType.objects.get_for_model( + self.document + ) + + self.view_arguments = { + 'app_label': content_type.app_label, + 'model': content_type.model, + 'object_id': self.document.pk + } + + def test_acl_create_view_no_permission(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + response = self.post( + viewname='acls:acl_create', kwargs=self.view_arguments, data={ + 'role': self.role.pk + } + ) + + self.assertEquals(response.status_code, 403) + self.assertEqual(AccessControlList.objects.count(), 0) + + def test_acl_create_view_with_permission(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + self.role.permissions.add( + permission_acl_edit.stored_permission + ) + + response = self.post( + viewname='acls:acl_create', kwargs=self.view_arguments, data={ + 'role': self.role.pk + }, follow=True + ) + + self.assertContains(response, text='created', status_code=200) + self.assertEqual(AccessControlList.objects.count(), 1) + + def test_acl_create_duplicate_view_with_permission(self): + """ + Test creating a duplicate ACL entry: same object & role + Result: Should redirect to existing ACL for object + role combination + """ + + acl = AccessControlList.objects.create( + content_object=self.document, role=self.role + ) + + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + self.role.permissions.add( + permission_acl_edit.stored_permission + ) + + response = self.post( + viewname='acls:acl_create', kwargs=self.view_arguments, data={ + 'role': self.role.pk + }, follow=True + ) + + self.assertContains( + response, text='vailable permissions', status_code=200 + ) + self.assertEqual(AccessControlList.objects.count(), 1) + self.assertEqual(AccessControlList.objects.first().pk, acl.pk)