diff --git a/mayan/apps/django_gpg/tests/test_api.py b/mayan/apps/django_gpg/tests/test_api.py index 199d8e6868..1f976e1107 100644 --- a/mayan/apps/django_gpg/tests/test_api.py +++ b/mayan/apps/django_gpg/tests/test_api.py @@ -13,19 +13,28 @@ from .literals import TEST_KEY_DATA, TEST_KEY_FINGERPRINT from .mixins import KeyTestMixin -class KeyAPITestCase(KeyTestMixin, BaseAPITestCase): - - # Key creation by upload - - def _request_key_create_view(self): +class KeyAPIViewTestMixin(object): + def _request_test_key_create_view(self): return self.post( viewname='rest_api:key-list', data={ 'key_data': TEST_KEY_DATA } ) + def _request_test_key_delete_view(self): + return self.delete( + viewname='rest_api:key-detail', kwargs={'pk': self.test_key.pk} + ) + + def _request_test_key_detail_view(self): + return self.get( + viewname='rest_api:key-detail', kwargs={'pk': self.test_key.pk} + ) + + +class KeyAPITestCase(KeyTestMixin, KeyAPIViewTestMixin, BaseAPITestCase): def test_key_create_view_no_permission(self): - response = self._request_key_create_view() + response = self._request_test_key_create_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(Key.objects.all().count(), 0) @@ -33,7 +42,7 @@ class KeyAPITestCase(KeyTestMixin, BaseAPITestCase): def test_key_create_view_with_permission(self): self.grant_permission(permission=permission_key_upload) - response = self._request_key_create_view() + response = self._request_test_key_create_view() self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.data['fingerprint'], TEST_KEY_FINGERPRINT) @@ -41,17 +50,10 @@ class KeyAPITestCase(KeyTestMixin, BaseAPITestCase): self.assertEqual(Key.objects.count(), 1) self.assertEqual(key.fingerprint, TEST_KEY_FINGERPRINT) - # Key deletion - - def _request_key_delete_view(self): - return self.delete( - viewname='rest_api:key-detail', kwargs={'pk': self.test_key.pk} - ) - def test_key_delete_view_no_access(self): self._create_test_key() - response = self._request_key_delete_view() + response = self._request_test_key_delete_view() self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(Key.objects.count(), 1) @@ -62,22 +64,15 @@ class KeyAPITestCase(KeyTestMixin, BaseAPITestCase): obj=self.test_key, permission=permission_key_delete ) - response = self._request_key_delete_view() + response = self._request_test_key_delete_view() self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Key.objects.count(), 0) - # Key detail - - def _request_key_detail_view(self): - return self.get( - viewname='rest_api:key-detail', kwargs={'pk': self.test_key.pk} - ) - def test_key_detail_view_no_access(self): self._create_test_key() - response = self._request_key_detail_view() + response = self._request_test_key_detail_view() self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) def test_key_detail_view_with_access(self): @@ -86,7 +81,7 @@ class KeyAPITestCase(KeyTestMixin, BaseAPITestCase): obj=self.test_key, permission=permission_key_view ) - response = self._request_key_detail_view() + response = self._request_test_key_detail_view() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( response.data['fingerprint'], self.test_key.fingerprint diff --git a/mayan/apps/django_gpg/tests/test_views.py b/mayan/apps/django_gpg/tests/test_views.py index c12eea22de..5bc46a0b70 100644 --- a/mayan/apps/django_gpg/tests/test_views.py +++ b/mayan/apps/django_gpg/tests/test_views.py @@ -11,13 +11,23 @@ from .literals import TEST_KEY_DATA, TEST_KEY_FINGERPRINT from .mixins import KeyTestMixin -class KeyViewTestCase(KeyTestMixin, GenericViewTestCase): +class KeyViewTestMixin(object): + def _request_test_key_download_view(self): + return self.get( + viewname='django_gpg:key_download', kwargs={'pk': self.test_key.pk} + ) + + def _request_test_key_upload_view(self): + return self.post( + viewname='django_gpg:key_upload', data={'key_data': TEST_KEY_DATA} + ) + + +class KeyViewTestCase(KeyTestMixin, KeyViewTestMixin, GenericViewTestCase): def test_key_download_view_no_permission(self): self._create_test_key() - response = self.get( - viewname='django_gpg:key_download', kwargs={'pk': self.test_key.pk} - ) + response = self._request_test_key_download_view() self.assertEqual(response.status_code, 403) def test_key_download_view_with_permission(self): @@ -25,20 +35,18 @@ class KeyViewTestCase(KeyTestMixin, GenericViewTestCase): self._create_test_key() - self.grant_access(obj=self.test_key, permission=permission_key_download) - - response = self.get( - viewname='django_gpg:key_download', kwargs={'pk': self.test_key.pk} + self.grant_access( + obj=self.test_key, permission=permission_key_download ) + + response = self._request_test_key_download_view() assert_download_response( self, response=response, content=self.test_key.key_data, basename=self.test_key.key_id, ) def test_key_upload_view_no_permission(self): - response = self.post( - viewname='django_gpg:key_upload', data={'key_data': TEST_KEY_DATA} - ) + response = self._request_test_key_upload_view() self.assertEqual(response.status_code, 403) self.assertEqual(Key.objects.count(), 0) @@ -46,12 +54,10 @@ class KeyViewTestCase(KeyTestMixin, GenericViewTestCase): def test_key_upload_view_with_permission(self): self.grant_permission(permission=permission_key_upload) - response = self.post( - viewname='django_gpg:key_upload', data={'key_data': TEST_KEY_DATA}, - follow=True - ) - - self.assertContains(response=response, text='created', status_code=200) + response = self._request_test_key_upload_view() + self.assertEqual(response.status_code, 302) self.assertEqual(Key.objects.count(), 1) - self.assertEqual(Key.objects.first().fingerprint, TEST_KEY_FINGERPRINT) + self.assertEqual( + Key.objects.first().fingerprint, TEST_KEY_FINGERPRINT + ) diff --git a/mayan/apps/document_comments/tests/test_api.py b/mayan/apps/document_comments/tests/test_api.py index 1f2916314e..8ad608baa2 100644 --- a/mayan/apps/document_comments/tests/test_api.py +++ b/mayan/apps/document_comments/tests/test_api.py @@ -15,9 +15,7 @@ from .literals import TEST_COMMENT_TEXT, TEST_COMMENT_TEXT_EDITED from .mixins import DocumentCommentTestMixin -class CommentAPITestCase( - DocumentCommentTestMixin, DocumentTestMixin, BaseAPITestCase -): +class CommentAPIViewTestMixin(object): def _request_test_comment_create_api_view(self): return self.post( viewname='rest_api:comment-list', kwargs={ @@ -27,6 +25,42 @@ class CommentAPITestCase( } ) + def _request_test_comment_delete_api_view(self): + return self.delete( + viewname='rest_api:comment-detail', kwargs={ + 'document_pk': self.test_document.pk, + 'comment_pk': self.test_document_comment.pk, + } + ) + + def _request_test_comment_detail_api_view(self): + return self.get( + viewname='rest_api:comment-detail', kwargs={ + 'document_pk': self.test_document.pk, + 'comment_pk': self.test_document_comment.pk + } + ) + + def _request_test_comment_edit_patch_api_view(self): + return self.patch( + viewname='rest_api:comment-detail', kwargs={ + 'document_pk': self.test_document.pk, + 'comment_pk': self.test_document_comment.pk, + }, data={'comment': TEST_COMMENT_TEXT_EDITED} + ) + + def _request_test_comment_list_api_view(self): + return self.get( + viewname='rest_api:comment-list', kwargs={ + 'document_pk': self.test_document.pk + } + ) + + +class CommentAPIViewTestCase( + CommentAPIViewTestMixin, DocumentCommentTestMixin, DocumentTestMixin, + BaseAPITestCase +): def test_comment_create_view_no_access(self): response = self._request_test_comment_create_api_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @@ -45,14 +79,6 @@ class CommentAPITestCase( self.assertEqual(Comment.objects.count(), 1) self.assertEqual(response.data['id'], comment.pk) - def _request_test_comment_delete_api_view(self): - return self.delete( - viewname='rest_api:comment-detail', kwargs={ - 'document_pk': self.test_document.pk, - 'comment_pk': self.test_document_comment.pk, - } - ) - def test_comment_delete_view_no_access(self): self._create_test_comment() @@ -72,19 +98,11 @@ class CommentAPITestCase( self.assertFalse(self.test_document_comment in Comment.objects.all()) - def _request_comment_edit_patch_api_view(self): - return self.patch( - viewname='rest_api:comment-detail', kwargs={ - 'document_pk': self.test_document.pk, - 'comment_pk': self.test_document_comment.pk, - }, data={'comment': TEST_COMMENT_TEXT_EDITED} - ) - def test_comment_edit_view_no_access(self): self._create_test_comment() comment_text = self.test_document_comment.comment - response = self._request_comment_edit_patch_api_view() + response = self._request_test_comment_edit_patch_api_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.test_document_comment.refresh_from_db() @@ -97,24 +115,16 @@ class CommentAPITestCase( ) comment_text = self.test_document_comment.comment - response = self._request_comment_edit_patch_api_view() + response = self._request_test_comment_edit_patch_api_view() self.assertEqual(response.status_code, status.HTTP_200_OK) self.test_document_comment.refresh_from_db() self.assertNotEqual(self.test_document_comment.comment, comment_text) - def _request_test_comment_api_view(self): - return self.get( - viewname='rest_api:comment-detail', kwargs={ - 'document_pk': self.test_document.pk, - 'comment_pk': self.test_document_comment.pk - } - ) - def test_comment_detail_view_no_access(self): self._create_test_comment() - response = self._request_test_comment_api_view() + response = self._request_test_comment_detail_api_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_comment_detail_view_with_access(self): @@ -123,18 +133,11 @@ class CommentAPITestCase( obj=self.test_document, permission=permission_document_comment_view ) - response = self._request_test_comment_api_view() + response = self._request_test_comment_detail_api_view() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['comment'], self.test_document_comment.comment) - def _request_test_comment_list_api_view(self): - return self.get( - viewname='rest_api:comment-list', kwargs={ - 'document_pk': self.test_document.pk - } - ) - def test_comment_list_view_no_access(self): self._create_test_comment() diff --git a/mayan/apps/document_indexing/tests/mixins.py b/mayan/apps/document_indexing/tests/mixins.py index 339982fea7..12e1e28c1a 100644 --- a/mayan/apps/document_indexing/tests/mixins.py +++ b/mayan/apps/document_indexing/tests/mixins.py @@ -13,7 +13,8 @@ class IndexTestMixin(object): self.test_index = Index.objects.create(label=TEST_INDEX_LABEL) # Add our document type to the new index - self.test_index.document_types.add(self.test_document_type) + if hasattr(self, 'test_document_type'): + self.test_index.document_types.add(self.test_document_type) # Rebuild indexes if rebuild: diff --git a/mayan/apps/document_indexing/tests/test_api.py b/mayan/apps/document_indexing/tests/test_api.py index ebb468b37d..7220151422 100644 --- a/mayan/apps/document_indexing/tests/test_api.py +++ b/mayan/apps/document_indexing/tests/test_api.py @@ -15,10 +15,8 @@ from .literals import TEST_INDEX_LABEL, TEST_INDEX_SLUG from .mixins import IndexTestMixin -class DocumentIndexingAPITestCase(IndexTestMixin, DocumentTestMixin, BaseAPITestCase): - auto_upload_document = False - - def _request_index_create_api_view(self): +class DocumentIndexingAPIViewTestMixin(object): + def _request_test_index_create_api_view(self): return self.post( viewname='rest_api:index-list', data={ 'label': TEST_INDEX_LABEL, 'slug': TEST_INDEX_SLUG, @@ -26,8 +24,29 @@ class DocumentIndexingAPITestCase(IndexTestMixin, DocumentTestMixin, BaseAPITest } ) + def _request_test_index_delete_api_view(self): + return self.delete( + viewname='rest_api:index-detail', kwargs={ + 'pk': self.test_index.pk + } + ) + + def _request_test_index_detail_api_view(self): + return self.get( + viewname='rest_api:index-detail', kwargs={ + 'pk': self.test_index.pk + } + ) + + +class DocumentIndexingAPITestCase( + IndexTestMixin, DocumentIndexingAPIViewTestMixin, DocumentTestMixin, + BaseAPITestCase +): + auto_upload_document = False + def test_index_create_api_view_no_permission(self): - response = self._request_index_create_api_view() + response = self._request_test_index_create_api_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(Index.objects.count(), 0) @@ -35,7 +54,7 @@ class DocumentIndexingAPITestCase(IndexTestMixin, DocumentTestMixin, BaseAPITest def test_index_create_api_view_with_permission(self): self.grant_permission(permission=permission_document_indexing_create) - response = self._request_index_create_api_view() + response = self._request_test_index_create_api_view() self.assertEqual(response.status_code, status.HTTP_201_CREATED) index = Index.objects.first() @@ -46,17 +65,10 @@ class DocumentIndexingAPITestCase(IndexTestMixin, DocumentTestMixin, BaseAPITest self.assertEqual(Index.objects.count(), 1) self.assertEqual(index.label, TEST_INDEX_LABEL) - def _request_index_delete_api_view(self): - return self.delete( - viewname='rest_api:index-detail', kwargs={ - 'pk': self.test_index.pk - } - ) - def test_index_delete_api_view_no_permission(self): self._create_test_index() - response = self._request_index_delete_api_view() + response = self._request_test_index_delete_api_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertTrue(self.test_index in Index.objects.all()) @@ -68,22 +80,15 @@ class DocumentIndexingAPITestCase(IndexTestMixin, DocumentTestMixin, BaseAPITest obj=self.test_index, permission=permission_document_indexing_delete ) - response = self._request_index_delete_api_view() + response = self._request_test_index_delete_api_view() self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertTrue(self.test_index not in Index.objects.all()) - def _request_index_detail_api_view(self): - return self.get( - viewname='rest_api:index-detail', kwargs={ - 'pk': self.test_index.pk - } - ) - def test_index_detail_api_view_no_access(self): self._create_test_index() - response = self._request_index_detail_api_view() + response = self._request_test_index_detail_api_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertTrue('id' not in response.data) @@ -95,7 +100,7 @@ class DocumentIndexingAPITestCase(IndexTestMixin, DocumentTestMixin, BaseAPITest obj=self.test_index, permission=permission_document_indexing_view ) - response = self._request_index_detail_api_view() + response = self._request_test_index_detail_api_view() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( diff --git a/mayan/apps/document_indexing/tests/test_views.py b/mayan/apps/document_indexing/tests/test_views.py index 6eac0dedb1..5354c4d206 100644 --- a/mayan/apps/document_indexing/tests/test_views.py +++ b/mayan/apps/document_indexing/tests/test_views.py @@ -1,5 +1,6 @@ from __future__ import absolute_import, unicode_literals +from mayan.apps.common.tests import GenericViewTestCase from mayan.apps.documents.tests import GenericDocumentViewTestCase from ..models import Index, IndexInstanceNode @@ -18,10 +19,8 @@ from .mixins import IndexTestMixin, IndexViewTestMixin class IndexViewTestCase( - IndexTestMixin, IndexViewTestMixin, GenericDocumentViewTestCase + IndexTestMixin, IndexViewTestMixin, GenericViewTestCase ): - auto_upload_document = False - def test_index_create_view_no_permission(self): response = self._request_test_index_create_view() self.assertEqual(response.status_code, 403) @@ -80,9 +79,7 @@ class IndexViewTestCase( self.assertEqual(self.test_index.label, TEST_INDEX_LABEL_EDITED) -class IndexInstaceViewTestCase( - IndexTestMixin, IndexViewTestMixin, GenericDocumentViewTestCase -): +class IndexInstaceViewTestMixin(object): def _create_index_template_node(self): self.test_index.node_templates.create( parent=self.test_index.template_root, @@ -90,6 +87,18 @@ class IndexInstaceViewTestCase( link_documents=True ) + def _request_test_index_instance_node_view(self, index_instance_node): + return self.get( + viewname='indexing:index_instance_node_view', kwargs={ + 'pk': index_instance_node.pk + } + ) + + +class IndexInstaceViewTestCase( + IndexTestMixin, IndexViewTestMixin, IndexInstaceViewTestMixin, + GenericDocumentViewTestCase +): def test_index_rebuild_view_no_permission(self): self.upload_document() self._create_test_index() @@ -115,17 +124,10 @@ class IndexInstaceViewTestCase( self.assertNotEqual(IndexInstanceNode.objects.count(), 0) - def _request_index_instance_node_view(self, index_instance_node): - return self.get( - viewname='indexing:index_instance_node_view', kwargs={ - 'pk': index_instance_node.pk - } - ) - def test_index_instance_node_view_no_permission(self): self._create_test_index() - response = self._request_index_instance_node_view( + response = self._request_test_index_instance_node_view( index_instance_node=self.test_index.instance_root ) self.assertEqual(response.status_code, 403) @@ -138,15 +140,13 @@ class IndexInstaceViewTestCase( permission=permission_document_indexing_instance_view ) - response = self._request_index_instance_node_view( + response = self._request_test_index_instance_node_view( index_instance_node=self.test_index.instance_root ) self.assertContains(response, text=TEST_INDEX_LABEL, status_code=200) -class IndexToolsViewTestCase( - IndexTestMixin, IndexViewTestMixin, GenericDocumentViewTestCase -): +class IndexToolsViewTestMixin(object): def _request_indexes_rebuild_get_view(self): return self.get( viewname='indexing:rebuild_index_instances' @@ -159,6 +159,11 @@ class IndexToolsViewTestCase( } ) + +class IndexToolsViewTestCase( + IndexTestMixin, IndexViewTestMixin, IndexToolsViewTestMixin, + GenericDocumentViewTestCase +): def test_indexes_rebuild_no_permission(self): self._create_test_index(rebuild=False) diff --git a/mayan/apps/document_signatures/tests/test_views.py b/mayan/apps/document_signatures/tests/test_views.py index d9b0ffd0d6..07c75aa6dd 100644 --- a/mayan/apps/document_signatures/tests/test_views.py +++ b/mayan/apps/document_signatures/tests/test_views.py @@ -23,84 +23,32 @@ TEST_UNSIGNED_DOCUMENT_COUNT = 4 TEST_SIGNED_DOCUMENT_COUNT = 2 -class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase): - auto_upload_document = False - - def _request_document_version_signature_list_view(self, document): - return self.get( - viewname='signatures:document_version_signature_list', - kwargs={'pk': self.test_document.latest_version.pk} +class SignaturesViewTestMixin(object): + def _request_test_document_version_signature_delete_view(self): + return self.post( + viewname='signatures:document_version_signature_delete', + kwargs={'pk': self.test_signature.pk} ) - def test_signature_list_view_no_permission(self): - self._create_test_key() - - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self._create_test_detached_signature() - - response = self._request_document_version_signature_list_view( - document=self.test_document - ) - self.assertEqual(response.status_code, 403) - - def test_signature_list_view_with_access(self): - self._create_test_key() - - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self._create_test_detached_signature() - - self.grant_access( - obj=self.test_document, - permission=permission_document_version_signature_view - ) - - response = self._request_document_version_signature_list_view( - document=self.test_document - ) - self.assertEqual(response.status_code, 200) - self.assertEqual(response.context['object_list'].count(), 1) - - def _request_document_version_signature_details_view(self): + def _request_test_document_version_signature_details_view(self): return self.get( viewname='signatures:document_version_signature_details', kwargs={'pk': self.test_signature.pk} ) - def test_signature_detail_view_no_permission(self): - self._create_test_key() - - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self._create_test_detached_signature() - - response = self._request_document_version_signature_details_view() - self.assertEqual(response.status_code, 404) - - def test_signature_detail_view_with_access(self): - self._create_test_key() - - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self._create_test_detached_signature() - - self.grant_access( - obj=self.test_document, - permission=permission_document_version_signature_view + def _request_test_document_version_signature_download_view(self): + return self.get( + viewname='signatures:document_version_signature_download', + kwargs={'pk': self.test_signature.pk} ) - response = self._request_document_version_signature_details_view() - self.assertContains( - response=response, text=self.test_signature.signature_id, - status_code=200 + def _request_test_document_version_signature_list_view(self, document): + return self.get( + viewname='signatures:document_version_signature_list', + kwargs={'pk': self.test_document.latest_version.pk} ) - def _request_document_version_signature_upload_view(self): + def _request_test_document_version_signature_upload_view(self): with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object: return self.post( viewname='signatures:document_version_signature_upload', @@ -108,70 +56,17 @@ class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase): data={'signature_file': file_object} ) - def test_signature_upload_view_no_permission(self): - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - response = self._request_document_version_signature_upload_view() - self.assertEqual(response.status_code, 403) - - self.assertEqual(DetachedSignature.objects.count(), 0) - - def test_signature_upload_view_with_access(self): - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self.grant_access( - obj=self.test_document, - permission=permission_document_version_signature_upload - ) - - response = self._request_document_version_signature_upload_view() - self.assertEqual(response.status_code, 302) - - self.assertEqual(DetachedSignature.objects.count(), 1) - - def _request_document_version_signature_download_view(self): - return self.get( - viewname='signatures:document_version_signature_download', - kwargs={'pk': self.test_signature.pk} - ) - - def test_signature_download_view_no_permission(self): - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self._create_test_detached_signature() - - response = self._request_document_version_signature_download_view() - self.assertEqual(response.status_code, 403) - - def test_signature_download_view_with_access(self): - self.test_document_path = TEST_DOCUMENT_PATH - self.upload_document() - - self._create_test_detached_signature() - - self.grant_access( - obj=self.test_document, - permission=permission_document_version_signature_download - ) - - self.expected_content_type = 'application/octet-stream; charset=utf-8' - - response = self._request_document_version_signature_download_view() - - with self.test_signature.signature_file as file_object: - assert_download_response( - self, response=response, content=file_object.read(), - ) - - def _request_document_version_signature_delete_view(self): + def _request_all_test_document_version_signature_verify_view(self): return self.post( - viewname='signatures:document_version_signature_delete', - kwargs={'pk': self.test_signature.pk} + viewname='signatures:all_document_version_signature_verify' ) + +class SignaturesViewTestCase( + SignaturesTestMixin, SignaturesViewTestMixin, GenericDocumentViewTestCase +): + auto_upload_document = False + def test_signature_delete_view_no_permission(self): self._create_test_key() @@ -185,7 +80,7 @@ class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase): permission=permission_document_version_signature_view ) - response = self._request_document_version_signature_delete_view() + response = self._request_test_document_version_signature_delete_view() self.assertEqual(response.status_code, 404) self.assertEqual(DetachedSignature.objects.count(), 1) @@ -206,15 +101,124 @@ class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase): permission=permission_document_version_signature_view ) - response = self._request_document_version_signature_delete_view() + response = self._request_test_document_version_signature_delete_view() self.assertEqual(response.status_code, 302) self.assertEqual(DetachedSignature.objects.count(), 0) - def _request_all_document_version_signature_verify_view(self): - return self.post( - viewname='signatures:all_document_version_signature_verify' + def test_signature_detail_view_no_permission(self): + self._create_test_key() + + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self._create_test_detached_signature() + + response = self._request_test_document_version_signature_details_view() + self.assertEqual(response.status_code, 404) + + def test_signature_detail_view_with_access(self): + self._create_test_key() + + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self._create_test_detached_signature() + + self.grant_access( + obj=self.test_document, + permission=permission_document_version_signature_view ) + response = self._request_test_document_version_signature_details_view() + self.assertContains( + response=response, text=self.test_signature.signature_id, + status_code=200 + ) + + def test_signature_download_view_no_permission(self): + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self._create_test_detached_signature() + + response = self._request_test_document_version_signature_download_view() + self.assertEqual(response.status_code, 403) + + def test_signature_download_view_with_access(self): + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self._create_test_detached_signature() + + self.grant_access( + obj=self.test_document, + permission=permission_document_version_signature_download + ) + + self.expected_content_type = 'application/octet-stream; charset=utf-8' + + response = self._request_test_document_version_signature_download_view() + + with self.test_signature.signature_file as file_object: + assert_download_response( + self, response=response, content=file_object.read(), + ) + + def test_signature_list_view_no_permission(self): + self._create_test_key() + + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self._create_test_detached_signature() + + response = self._request_test_document_version_signature_list_view( + document=self.test_document + ) + self.assertEqual(response.status_code, 403) + + def test_signature_list_view_with_access(self): + self._create_test_key() + + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self._create_test_detached_signature() + + self.grant_access( + obj=self.test_document, + permission=permission_document_version_signature_view + ) + + response = self._request_test_document_version_signature_list_view( + document=self.test_document + ) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['object_list'].count(), 1) + + def test_signature_upload_view_no_permission(self): + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + response = self._request_test_document_version_signature_upload_view() + self.assertEqual(response.status_code, 403) + + self.assertEqual(DetachedSignature.objects.count(), 0) + + def test_signature_upload_view_with_access(self): + self.test_document_path = TEST_DOCUMENT_PATH + self.upload_document() + + self.grant_access( + obj=self.test_document, + permission=permission_document_version_signature_upload + ) + + response = self._request_test_document_version_signature_upload_view() + self.assertEqual(response.status_code, 302) + + self.assertEqual(DetachedSignature.objects.count(), 1) + def test_missing_signature_verify_view_no_permission(self): # Silence converter logging self._silence_logger(name='mayan.apps.converter.backends') @@ -240,7 +244,7 @@ class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase): DocumentVersion._post_save_hooks = old_hooks - response = self._request_all_document_version_signature_verify_view() + response = self._request_all_test_document_version_signature_verify_view() self.assertEqual(response.status_code, 403) self.assertEqual( @@ -277,7 +281,7 @@ class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase): permission=permission_document_version_signature_verify ) - response = self._request_all_document_version_signature_verify_view() + response = self._request_all_test_document_version_signature_verify_view() self.assertEqual(response.status_code, 302) self.assertEqual( diff --git a/mayan/apps/dynamic_search/tests/test_api.py b/mayan/apps/dynamic_search/tests/test_api.py index c3b6ef53c3..7d1ef9290c 100644 --- a/mayan/apps/dynamic_search/tests/test_api.py +++ b/mayan/apps/dynamic_search/tests/test_api.py @@ -10,7 +10,7 @@ from mayan.apps.rest_api.tests import BaseAPITestCase from ..classes import SearchModel -class SearchModelAPITestCase(BaseAPITestCase): +class SearchModelAPIViewTestCase(BaseAPITestCase): def test_search_models_view(self): response = self.get( viewname='rest_api:searchmodel-list' @@ -23,7 +23,7 @@ class SearchModelAPITestCase(BaseAPITestCase): ) -class SearchAPITestCase(DocumentTestMixin, BaseAPITestCase): +class SearchAPIViewTestMixin(object): def _request_search_view(self): query = {'q': self.test_document.label} return self.get( @@ -32,6 +32,19 @@ class SearchAPITestCase(DocumentTestMixin, BaseAPITestCase): }, query=query ) + def _request_advanced_search_view(self): + query = {'document_type__label': self.test_document.document_type.label} + + return self.get( + viewname='rest_api:advanced-search-view', kwargs={ + 'search_model': document_search.get_full_name() + }, query=query + ) + + +class SearchAPIViewTestCase( + SearchAPIViewTestMixin, DocumentTestMixin, BaseAPITestCase +): def test_search_no_permission(self): response = self._request_search_view() self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -49,15 +62,6 @@ class SearchAPITestCase(DocumentTestMixin, BaseAPITestCase): ) self.assertEqual(response.data['count'], 1) - def _request_advanced_search_view(self): - query = {'document_type__label': self.test_document.document_type.label} - - return self.get( - viewname='rest_api:advanced-search-view', kwargs={ - 'search_model': document_search.get_full_name() - }, query=query - ) - def test_advanced_search_api_view_no_permission(self): response = self._request_advanced_search_view() self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/mayan/apps/tags/tests/test_workflow_actions.py b/mayan/apps/tags/tests/test_workflow_actions.py index c3a9a35754..bceebdfb58 100644 --- a/mayan/apps/tags/tests/test_workflow_actions.py +++ b/mayan/apps/tags/tests/test_workflow_actions.py @@ -20,7 +20,7 @@ class TagActionTestCase(TagTestMixin, ActionTestCase): action.execute(context={'document': self.test_document}) self.assertEqual(self.test_tag.documents.count(), 1) - self.assertEqual(self.test_document in self.test_tag.documents.all()) + self.assertTrue(self.test_document in self.test_tag.documents.all()) def test_tag_remove_action(self): self.test_tag.attach_to(document=self.test_document)