diff --git a/mayan/apps/sources/tests/mixins.py b/mayan/apps/sources/tests/mixins.py index d849788514..62959d5cfc 100644 --- a/mayan/apps/sources/tests/mixins.py +++ b/mayan/apps/sources/tests/mixins.py @@ -7,6 +7,13 @@ from .literals import TEST_SOURCE_LABEL, TEST_SOURCE_UNCOMPRESS_N class SourceTestMixin(object): + auto_create_test_source = True + + def setUp(self): + super(SourceTestMixin, self).setUp() + if self.auto_create_test_source: + self._create_test_source() + def _create_test_source(self): self.test_source = WebFormSource.objects.create( enabled=True, label=TEST_SOURCE_LABEL, diff --git a/mayan/apps/sources/tests/test_models.py b/mayan/apps/sources/tests/test_models.py index 8d142f1e9b..188b086931 100644 --- a/mayan/apps/sources/tests/test_models.py +++ b/mayan/apps/sources/tests/test_models.py @@ -39,7 +39,6 @@ class CompressedUploadsTestCase(SourceTestMixin, GenericDocumentTestCase): auto_upload_document = False def test_upload_compressed_file(self): - self._create_test_source() self.test_source.uncompress = SOURCE_UNCOMPRESS_CHOICE_Y self.test_source.save() diff --git a/mayan/apps/sources/tests/test_views.py b/mayan/apps/sources/tests/test_views.py index a5484201f1..cba5067210 100644 --- a/mayan/apps/sources/tests/test_views.py +++ b/mayan/apps/sources/tests/test_views.py @@ -6,7 +6,9 @@ import shutil from mayan.apps.checkouts.models import NewVersionBlock from mayan.apps.common.tests.base import GenericViewTestCase from mayan.apps.documents.models import Document -from mayan.apps.documents.permissions import permission_document_create +from mayan.apps.documents.permissions import ( + permission_document_create, permission_document_new_version +) from mayan.apps.documents.tests.base import GenericDocumentViewTestCase from mayan.apps.documents.tests.literals import ( TEST_COMPRESSED_DOCUMENT_PATH, TEST_DOCUMENT_DESCRIPTION, @@ -28,6 +30,44 @@ from .literals import ( from .mixins import SourceTestMixin, SourceViewTestMixin +class DocumentViewTestMixin(object): + def _request_test_document_append_pages_view(self): + with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object: + return self.post( + viewname='sources:document_pages_append', kwargs={ + 'document_pk': self.test_document.pk + }, data={ + 'source-file': file_object, + 'document-append_pages': True, # Needs to be explicit + }, + ) + + +class DocumentViewTestCase( + SourceTestMixin, DocumentViewTestMixin, GenericDocumentViewTestCase +): + def test_document_append_pages_view_no_permission(self): + page_count = self.test_document.pages.count() + + response = self._request_test_document_append_pages_view() + self.assertEqual(response.status_code, 403) + + self.assertEqual(self.test_document.pages.count(), page_count) + + def test_document_append_pages_view_with_access(self): + page_count = self.test_document.pages.count() + + self.grant_access( + obj=self.test_document, + permission=permission_document_new_version + ) + + response = self._request_test_document_append_pages_view() + self.assertEqual(response.status_code, 302) + + self.assertTrue(self.test_document.pages.count() > page_count) + + class DocumentUploadWizardViewTestMixin(object): def _request_upload_wizard_view(self, document_path=TEST_SMALL_DOCUMENT_PATH): with open(document_path, mode='rb') as file_object: @@ -54,10 +94,6 @@ class DocumentUploadWizardViewTestCase( ): auto_upload_document = False - def setUp(self): - super(DocumentUploadWizardViewTestCase, self).setUp() - self._create_test_source() - def test_upload_compressed_file(self): self.test_source.uncompress = SOURCE_UNCOMPRESS_CHOICE_Y self.test_source.save() @@ -188,7 +224,7 @@ class DocumentUploadIssueTestCase(GenericDocumentViewTestCase): self.assertEqual(document.description, TEST_DOCUMENT_DESCRIPTION) -class NewDocumentVersionViewTestCase(GenericDocumentViewTestCase): +class DocumentVersionUploadViewTestCase(GenericDocumentViewTestCase): auto_login_superuser = True auto_login_user = False create_test_case_superuser = True @@ -300,6 +336,8 @@ class StagingFolderViewTestCase( class SourcesViewTestCase( SourceTestMixin, SourceViewTestMixin, GenericViewTestCase ): + auto_create_test_source = False + def test_source_create_view_no_permission(self): response = self._request_setup_source_create_view() self.assertEqual(response.status_code, 403)