diff --git a/mayan/apps/converter/tests/literals.py b/mayan/apps/converter/tests/literals.py new file mode 100644 index 0000000000..4cb3d9704e --- /dev/null +++ b/mayan/apps/converter/tests/literals.py @@ -0,0 +1,4 @@ +from __future__ import unicode_literals + +TEST_TRANSFORMATION_NAME = 'rotate' +TEST_TRANSFORMATION_ARGUMENT = 'degrees: 180' diff --git a/mayan/apps/converter/tests/test_views.py b/mayan/apps/converter/tests/test_views.py new file mode 100644 index 0000000000..bd7daa5d39 --- /dev/null +++ b/mayan/apps/converter/tests/test_views.py @@ -0,0 +1,93 @@ +from __future__ import unicode_literals + +from django.contrib.contenttypes.models import ContentType + +from converter.models import Transformation +from converter.permissions import permission_transformation_delete +from documents.tests.test_views import GenericDocumentViewTestCase + +from ..models import Transformation +from ..permissions import ( + permission_transformation_create, permission_transformation_view +) + +from .literals import TEST_TRANSFORMATION_NAME, TEST_TRANSFORMATION_ARGUMENT + + +class TransformationViewsTestCase(GenericDocumentViewTestCase): + def setUp(self): + super(TransformationViewsTestCase, self).setUp() + self.login_user() + + def _transformation_list_view(self): + return self.get( + 'converter:transformation_list', kwargs={ + 'app_label': 'documents', 'model': 'document', + 'object_id': self.document.pk + } + ) + + def test_transformation_list_view_no_permissions(self): + response = self._transformation_list_view() + + self.assertEqual(response.status_code, 403) + + def test_transformation_list_view_with_permissions(self): + self.grant(permission=permission_transformation_view) + response = self._transformation_list_view() + + self.assertContains( + response, text=self.document.label, status_code=200 + ) + + def _transformation_create_view(self): + return self.post( + 'converter:transformation_create', kwargs={ + 'app_label': 'documents', 'model': 'document', + 'object_id': self.document.pk + }, data={ + 'name':TEST_TRANSFORMATION_NAME, + 'arguments': TEST_TRANSFORMATION_ARGUMENT + } + ) + + def test_transformation_create_view_no_permissions(self): + response = self._transformation_create_view() + + self.assertEqual(response.status_code, 403) + self.assertEqual(Transformation.objects.count(), 0) + + def test_transformation_create_view_with_permissions(self): + self.grant(permission=permission_transformation_create) + response = self._transformation_create_view() + + self.assertEqual(response.status_code, 302) + self.assertEqual(Transformation.objects.count(), 1) + + def _transformation_delete_view(self): + content_type = ContentType.objects.get_for_model(model=self.document) + + transformation = Transformation.objects.create( + content_type=content_type, object_id=self.document.pk, + name=TEST_TRANSFORMATION_NAME, + arguments=TEST_TRANSFORMATION_ARGUMENT + ) + + return self.post( + 'converter:transformation_delete', kwargs={ + 'pk': transformation.pk + } + ) + + def test_transformation_delete_view_no_permissions(self): + response = self._transformation_delete_view() + + self.assertEqual(response.status_code, 403) + self.assertEqual(Transformation.objects.count(), 1) + + def test_transformation_delete_view_with_permissions(self): + self.grant(permission=permission_transformation_delete) + response = self._transformation_delete_view() + + self.assertEqual(response.status_code, 302) + self.assertEqual(Transformation.objects.count(), 0) diff --git a/mayan/apps/documents/tests/test_utils.py b/mayan/apps/documents/tests/test_utils.py new file mode 100644 index 0000000000..9a69b81199 --- /dev/null +++ b/mayan/apps/documents/tests/test_utils.py @@ -0,0 +1,24 @@ +from __future__ import unicode_literals + +from common.tests import BaseTestCase + +from ..utils import parse_range + + +class DocumentUtilsTestCase(BaseTestCase): + def test_parse_range(self): + self.assertEqual( + parse_range('1'), [1] + ) + + self.assertEqual( + parse_range('1-5'), [1, 2, 3, 4 ,5] + ) + + self.assertEqual( + parse_range('2,4,6'), [2, 4, 6] + ) + + self.assertEqual( + parse_range('2,4,6-8'), [2, 4, 6, 7, 8] + ) diff --git a/mayan/apps/documents/tests/test_views.py b/mayan/apps/documents/tests/test_views.py index 0f61e1d948..98c47c47d5 100644 --- a/mayan/apps/documents/tests/test_views.py +++ b/mayan/apps/documents/tests/test_views.py @@ -488,6 +488,28 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase): ) +class DocumentPageViewTestCase(GenericDocumentViewTestCase): + def setUp(self): + super(DocumentPageViewTestCase, self).setUp() + self.login_user() + + def _document_page_list_view(self): + return self.get( + 'documents:document_pages', args=(self.document.pk,) + ) + + def test_document_page_list_view_no_permission(self): + response = self._document_page_list_view() + self.assertEqual(response.status_code, 403) + + def test_document_page_list_view_with_permission(self): + self.grant(permission_document_view) + response = self._document_page_list_view() + self.assertContains( + response, text=self.document.label, status_code=200 + ) + + class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): def setUp(self): super(DocumentTypeViewsTestCase, self).setUp() diff --git a/mayan/apps/ocr/tests/test_views.py b/mayan/apps/ocr/tests/test_views.py new file mode 100644 index 0000000000..fd28e29d0c --- /dev/null +++ b/mayan/apps/ocr/tests/test_views.py @@ -0,0 +1,38 @@ +from __future__ import unicode_literals + +from django.core import mail +from django.test import override_settings + +from documents.tests.test_views import GenericDocumentViewTestCase + +from ..permissions import permission_ocr_content_view + + +@override_settings(OCR_AUTO_OCR=True) +class OCRViewsTestCase(GenericDocumentViewTestCase): + # PyOCR's leak descriptor in get_available_languages and image_to_string + # Disable descriptor leak test until fixed in upstream + _skip_file_descriptor_test = True + + def setUp(self): + super(OCRViewsTestCase, self).setUp() + self.login_user() + + def _document_content_view(self): + return self.get( + 'ocr:document_content', args=(self.document.pk,) + ) + + def test_document_content_view_no_permissions(self): + response = self._document_content_view() + + self.assertEqual(response.status_code, 403) + + def test_document_content_view_with_permission(self): + self.grant(permission_ocr_content_view) + + response = self._document_content_view() + + self.assertContains( + response, 'Mayan EDMS Documentation', status_code=200 + )