From a013ab0bf5f20a15caa0313ccc7e7a77544596c8 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 7 Jan 2017 01:03:51 -0400 Subject: [PATCH] Fix and streamline the folder app view tests. --- mayan/apps/common/tests/test_views.py | 8 + mayan/apps/folders/tests/test_views.py | 253 +++++++++++-------------- 2 files changed, 116 insertions(+), 145 deletions(-) diff --git a/mayan/apps/common/tests/test_views.py b/mayan/apps/common/tests/test_views.py index 6fa95a8721..e9f115f4da 100644 --- a/mayan/apps/common/tests/test_views.py +++ b/mayan/apps/common/tests/test_views.py @@ -76,6 +76,11 @@ class GenericViewTestCase(BaseTestCase): data=data, follow=follow ) + def grant(self, permission): + self.role.permissions.add( + permission.stored_permission + ) + def login(self, username, password): logged_in = self.client.login(username=username, password=password) @@ -84,6 +89,9 @@ class GenericViewTestCase(BaseTestCase): self.assertTrue(logged_in) self.assertTrue(user.is_authenticated()) + def login_user(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + def post(self, viewname, *args, **kwargs): data = kwargs.pop('data', {}) follow = kwargs.pop('follow', False) diff --git a/mayan/apps/folders/tests/test_views.py b/mayan/apps/folders/tests/test_views.py index 274eb430c6..7dc7fcc5da 100644 --- a/mayan/apps/folders/tests/test_views.py +++ b/mayan/apps/folders/tests/test_views.py @@ -1,5 +1,7 @@ from __future__ import absolute_import, unicode_literals +from django.test import override_settings + from documents.permissions import permission_document_view from documents.tests.test_views import GenericDocumentViewTestCase from user_management.tests import ( @@ -15,236 +17,197 @@ from ..permissions import ( from .literals import TEST_FOLDER_LABEL, TEST_FOLDER_EDITED_LABEL +@override_settings(OCR_AUTO_OCR=False) class FolderViewTestCase(GenericDocumentViewTestCase): - def test_folder_create_view_no_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + def setUp(self): + super(FolderViewTestCase, self).setUp() + self.login_user() - response = self.post( + def _create_folder(self, label): + return self.post( 'folders:folder_create', data={ 'label': TEST_FOLDER_LABEL } ) + def test_folder_create_view_no_permission(self): + response = self._create_folder(label=TEST_FOLDER_LABEL) + self.assertEquals(response.status_code, 403) self.assertEqual(Folder.objects.count(), 0) def test_folder_create_view_with_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + self.grant(permission=permission_folder_create) - self.role.permissions.add( - permission_folder_create.stored_permission - ) + response = self._create_folder(label=TEST_FOLDER_LABEL) - response = self.post( - 'folders:folder_create', data={ - 'label': TEST_FOLDER_LABEL - }, follow=True - ) - self.assertContains(response, text='created', status_code=200) + self.assertEqual(response.status_code, 302) self.assertEqual(Folder.objects.count(), 1) self.assertEqual(Folder.objects.first().label, TEST_FOLDER_LABEL) def test_folder_create_duplicate_view_with_permission(self): folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + self.grant(permission=permission_folder_create) - self.role.permissions.add( - permission_folder_create.stored_permission - ) - - response = self.post( - 'folders:folder_create', data={ - 'label': TEST_FOLDER_LABEL - } - ) + response = self._create_folder(label=TEST_FOLDER_LABEL) self.assertContains(response, text='exists', status_code=200) self.assertEqual(Folder.objects.count(), 1) self.assertEqual(Folder.objects.first().pk, folder.pk) - def test_folder_delete_view_no_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + def _delete_folder(self, folder): + return self.post('folders:folder_delete', args=(folder.pk,)) + def test_folder_delete_view_no_permission(self): folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - response = self.post('folders:folder_delete', args=(folder.pk,)) + response = self._delete_folder(folder=folder) self.assertEqual(response.status_code, 403) self.assertEqual(Folder.objects.count(), 1) def test_folder_delete_view_with_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add( - permission_folder_delete.stored_permission - ) + self.grant(permission=permission_folder_delete) folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - response = self.post( - 'folders:folder_delete', args=(folder.pk,), follow=True - ) + response = self._delete_folder(folder=folder) - self.assertContains(response, text='deleted', status_code=200) + self.assertEqual(response.status_code, 302) self.assertEqual(Folder.objects.count(), 0) - def test_folder_edit_view_no_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - - response = self.post( + def _edit_folder(self, folder, label): + return self.post( 'folders:folder_edit', args=(folder.pk,), data={ - 'label': TEST_FOLDER_EDITED_LABEL + 'label': label } ) + + def test_folder_edit_view_no_permission(self): + folder = Folder.objects.create(label=TEST_FOLDER_LABEL) + + response = self._edit_folder( + folder=folder, label=TEST_FOLDER_EDITED_LABEL + ) self.assertEqual(response.status_code, 403) - folder = Folder.objects.get(pk=folder.pk) + folder.refresh_from_db() self.assertEqual(folder.label, TEST_FOLDER_LABEL) def test_folder_edit_view_with_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add( - permission_folder_edit.stored_permission - ) - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - response = self.post( - 'folders:folder_edit', args=(folder.pk,), data={ - 'label': TEST_FOLDER_EDITED_LABEL - }, follow=True - ) + self.grant(permission=permission_folder_edit) - folder = Folder.objects.get(pk=folder.pk) - self.assertContains(response, text='update', status_code=200) - self.assertEqual(folder.label, TEST_FOLDER_EDITED_LABEL) - - def test_folder_add_document_view_no_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add(permission_folder_view.stored_permission) - - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - - response = self.post( - 'folders:folder_add_document', args=(self.document.pk,), data={ - 'folder': folder.pk, - } + response = self._edit_folder( + folder=folder, label=TEST_FOLDER_EDITED_LABEL ) self.assertEqual(response.status_code, 302) + folder.refresh_from_db() + self.assertEqual(folder.label, TEST_FOLDER_EDITED_LABEL) + + def _add_document_to_folder(self, folder): + return self.post( + 'folders:folder_add_document', args=(self.document.pk,), data={ + 'folders': folder.pk + } + ) + + def test_folder_add_document_view_no_permission(self): + folder = Folder.objects.create(label=TEST_FOLDER_LABEL) + + self.grant(permission=permission_folder_view) + + response = self._add_document_to_folder(folder=folder) + + self.assertContains( + response, text='Select a valid choice.', status_code=200 + ) + folder.refresh_from_db() self.assertEqual(folder.documents.count(), 0) def test_folder_add_document_view_with_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add(permission_folder_view.stored_permission) - - self.role.permissions.add( - permission_folder_add_document.stored_permission - ) - - self.role.permissions.add( - permission_document_view.stored_permission - ) - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - response = self.post( - 'folders:folder_add_document', args=(self.document.pk,), data={ - 'folder': folder.pk, - }, follow=True - ) + self.grant(permission=permission_folder_view) + self.grant(permission=permission_folder_add_document) + self.grant(permission=permission_document_view) - folder = Folder.objects.get(pk=folder.pk) - self.assertContains(response, text='added', status_code=200) + response = self._add_document_to_folder(folder=folder) + + folder.refresh_from_db() + self.assertEqual(response.status_code, 302) self.assertEqual(folder.documents.count(), 1) self.assertQuerysetEqual( folder.documents.all(), (repr(self.document),) ) + def _add_multiple_documents_to_folder(self, folder): + return self.post( + 'folders:folder_add_multiple_documents', data={ + 'id_list': (self.document.pk,), 'folders': folder.pk + } + ) + def test_folder_add_multiple_documents_view_no_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add(permission_folder_view.stored_permission) - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - response = self.post( - 'folders:folder_add_multiple_documents', data={ - 'id_list': (self.document.pk,), 'folder': folder.pk - } - ) + self.grant(permission=permission_folder_view) - self.assertEqual(response.status_code, 302) + response = self._add_multiple_documents_to_folder(folder=folder) + + self.assertContains( + response, text='Select a valid choice', status_code=200 + ) + folder.refresh_from_db() self.assertEqual(folder.documents.count(), 0) def test_folder_add_multiple_documents_view_with_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add(permission_folder_view.stored_permission) - - self.role.permissions.add( - permission_folder_add_document.stored_permission - ) - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - response = self.post( - 'folders:folder_add_multiple_documents', data={ - 'id_list': (self.document.pk,), 'folder': folder.pk - }, follow=True - ) + self.grant(permission=permission_folder_view) + self.grant(permission=permission_folder_add_document) - folder = Folder.objects.get(pk=folder.pk) - self.assertContains(response, text='added', status_code=200) + response = self._add_multiple_documents_to_folder(folder=folder) + + self.assertEqual(response.status_code, 302) + folder.refresh_from_db() self.assertEqual(folder.documents.count(), 1) self.assertQuerysetEqual( folder.documents.all(), (repr(self.document),) ) - def test_folder_remove_document_view_no_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - folder = Folder.objects.create(label=TEST_FOLDER_LABEL) - - folder.documents.add(self.document) - - self.assertEqual(folder.documents.count(), 1) - - response = self.post( - 'folders:folder_document_multiple_remove', args=(folder.pk,), + def _remove_document_from_folder(self, folder): + return self.post( + 'folders:document_folder_remove', args=(self.document.pk,), data={ - 'id_list': (self.document.pk,), + 'folders': (folder.pk,), } ) - self.assertEqual(response.status_code, 302) - - folder = Folder.objects.get(pk=folder.pk) - self.assertEqual(folder.documents.count(), 1) - - def test_folder_remove_document_view_with_permission(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - - self.role.permissions.add( - permission_folder_remove_document.stored_permission - ) - + def test_folder_remove_document_view_no_permission(self): folder = Folder.objects.create(label=TEST_FOLDER_LABEL) folder.documents.add(self.document) - self.assertEqual(folder.documents.count(), 1) - response = self.post( - 'folders:folder_document_multiple_remove', args=(folder.pk,), - data={ - 'id_list': (self.document.pk,), - }, follow=True + response = self._remove_document_from_folder(folder=folder) + + self.assertContains( + response, text='Select a valid choice', status_code=200 ) - folder = Folder.objects.get(pk=folder.pk) - self.assertContains(response, text='removed', status_code=200) + folder.refresh_from_db() + self.assertEqual(folder.documents.count(), 1) + + def test_folder_remove_document_view_with_permission(self): + folder = Folder.objects.create(label=TEST_FOLDER_LABEL) + + folder.documents.add(self.document) + + self.grant(permission=permission_folder_remove_document) + + response = self._remove_document_from_folder(folder=folder) + + self.assertEqual(response.status_code, 302) + folder.refresh_from_db() self.assertEqual(folder.documents.count(), 0)