Add new document indexing permission. This permission allows user to view an index instance as opposed to the current permission which allows viewing an index definiton on the setup menu. Modernize the document index view tests.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-08-22 01:04:36 -04:00
parent 1890ff5bee
commit dfd2d3dc78
6 changed files with 72 additions and 51 deletions
@@ -5,7 +5,9 @@ from documents.tests import GenericDocumentViewTestCase
from ..models import Index
from ..permissions import (
permission_document_indexing_create, permission_document_indexing_delete,
permission_document_indexing_edit, permission_document_indexing_view
permission_document_indexing_edit,
permission_document_indexing_instance_view,
permission_document_indexing_view
)
from .literals import (
@@ -15,35 +17,36 @@ from .literals import (
class IndexViewTestCase(GenericDocumentViewTestCase):
def test_index_create_view_no_permission(self):
self.login_user()
response = self.post(
def _request_index_create_view(self):
return self.post(
'indexing:index_setup_create', data={
'label': TEST_INDEX_LABEL, 'slug': TEST_INDEX_SLUG
}
)
def test_index_create_view_no_permission(self):
self.login_user()
response = self._request_index_create_view()
self.assertEquals(response.status_code, 403)
self.assertEqual(Index.objects.count(), 0)
def test_index_create_view_with_permission(self):
self.login_user()
self.role.permissions.add(
permission_document_indexing_create.stored_permission
self.grant_permission(
permission=permission_document_indexing_create
)
response = self.post(
'indexing:index_setup_create', data={
'label': TEST_INDEX_LABEL, 'slug': TEST_INDEX_SLUG
}, follow=True
)
response = self._request_index_create_view()
self.assertContains(response, text='created', status_code=200)
self.assertEqual(response.status_code, 302)
self.assertEqual(Index.objects.count(), 1)
self.assertEqual(Index.objects.first().label, TEST_INDEX_LABEL)
def _request_index_delete_view(self, index):
return self.post('indexing:index_setup_delete', args=(index.pk,))
def test_index_delete_view_no_permission(self):
self.login_user()
@@ -51,7 +54,7 @@ class IndexViewTestCase(GenericDocumentViewTestCase):
label=TEST_INDEX_LABEL, slug=TEST_INDEX_SLUG
)
response = self.post('indexing:index_setup_delete', args=(index.pk,))
response = self._request_index_delete_view(index=index)
self.assertEqual(response.status_code, 403)
self.assertEqual(Index.objects.count(), 1)
@@ -66,13 +69,18 @@ class IndexViewTestCase(GenericDocumentViewTestCase):
label=TEST_INDEX_LABEL, slug=TEST_INDEX_SLUG
)
response = self.post(
'indexing:index_setup_delete', args=(index.pk,), follow=True
)
response = self._request_index_delete_view(index=index)
self.assertContains(response, text='deleted', status_code=200)
self.assertEqual(response.status_code, 302)
self.assertEqual(Index.objects.count(), 0)
def _request_index_edit_view(self, index):
return self.post(
'indexing:index_setup_edit', args=(index.pk,), data={
'label': TEST_INDEX_LABEL_EDITED, 'slug': TEST_INDEX_SLUG
}
)
def test_index_edit_view_no_permission(self):
self.login_user()
@@ -80,34 +88,26 @@ class IndexViewTestCase(GenericDocumentViewTestCase):
label=TEST_INDEX_LABEL, slug=TEST_INDEX_SLUG
)
response = self.post(
'indexing:index_setup_edit', args=(index.pk,), data={
'label': TEST_INDEX_LABEL_EDITED, 'slug': TEST_INDEX_SLUG
}
)
response = self._request_index_edit_view(index=index)
self.assertEqual(response.status_code, 403)
index = Index.objects.get(pk=index.pk)
self.assertEqual(index.label, TEST_INDEX_LABEL)
def test_index_edit_view_with_permission(self):
def test_index_edit_view_with_access(self):
self.login_user()
self.role.permissions.add(
permission_document_indexing_edit.stored_permission
)
index = Index.objects.create(
label=TEST_INDEX_LABEL, slug=TEST_INDEX_SLUG
)
response = self.post(
'indexing:index_setup_edit', args=(index.pk,), data={
'label': TEST_INDEX_LABEL_EDITED, 'slug': TEST_INDEX_SLUG
}, follow=True
self.grant_access(
permission=permission_document_indexing_edit,
obj=index
)
index = Index.objects.get(pk=index.pk)
self.assertContains(response, text='update', status_code=200)
response = self._request_index_edit_view(index=index)
self.assertEqual(response.status_code, 302)
index.refresh_from_db()
self.assertEqual(index.label, TEST_INDEX_LABEL_EDITED)
def create_test_index(self):
@@ -129,28 +129,34 @@ class IndexViewTestCase(GenericDocumentViewTestCase):
return index
def _request_index_instance_node_view(self, index_instance_node):
return self.get(
'indexing:index_instance_node_view', args=(index_instance_node.pk,)
)
def test_index_instance_node_view_no_permission(self):
index = self.create_test_index()
self.login_user()
response = self.get(
'indexing:index_instance_node_view', args=(index.instance_root.pk,)
response = self._request_index_instance_node_view(
index_instance_node=index.instance_root
)
self.assertEqual(response.status_code, 403)
def test_index_instance_node_view_with_permission(self):
def test_index_instance_node_view_with_access(self):
index = self.create_test_index()
self.login_user()
self.role.permissions.add(
permission_document_indexing_view.stored_permission
self.grant_access(
permission=permission_document_indexing_instance_view,
obj=index
)
response = self.get(
'indexing:index_instance_node_view', args=(index.instance_root.pk,)
response = self._request_index_instance_node_view(
index_instance_node=index.instance_root
)
self.assertContains(response, text=TEST_INDEX_LABEL, status_code=200)