Code style improvement. Test code consolidation. PEP8 cleanups.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-10-06 02:13:36 -04:00
parent 025fafabf4
commit a99b044555
50 changed files with 656 additions and 682 deletions

View File

@@ -3,11 +3,10 @@ from __future__ import absolute_import, unicode_literals
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.test import override_settings from django.test import override_settings
from documents.models import DocumentType from rest_framework import status
from documents.permissions import permission_document_view from documents.permissions import permission_document_view
from documents.tests.literals import ( from documents.tests import DocumentTestMixin
TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH
)
from permissions.tests.literals import TEST_ROLE_LABEL from permissions.tests.literals import TEST_ROLE_LABEL
from rest_api.tests import BaseAPITestCase from rest_api.tests import BaseAPITestCase
@@ -16,27 +15,15 @@ from ..permissions import permission_acl_view
@override_settings(OCR_AUTO_OCR=False) @override_settings(OCR_AUTO_OCR=False)
class ACLAPITestCase(BaseAPITestCase): class ACLAPITestCase(DocumentTestMixin, BaseAPITestCase):
def setUp(self): def setUp(self):
super(ACLAPITestCase, self).setUp() super(ACLAPITestCase, self).setUp()
self.login_admin_user() self.login_admin_user()
self.document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object:
self.document = self.document_type.new_document(
file_object=file_object
)
self.document_content_type = ContentType.objects.get_for_model( self.document_content_type = ContentType.objects.get_for_model(
self.document self.document
) )
def tearDown(self):
if hasattr(self, 'document_type'):
self.document_type.delete()
def _create_acl(self): def _create_acl(self):
self.acl = AccessControlList.objects.create( self.acl = AccessControlList.objects.create(
content_object=self.document, content_object=self.document,
@@ -77,7 +64,7 @@ class ACLAPITestCase(BaseAPITestCase):
) )
) )
self.assertEqual(response.status_code, 204) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(AccessControlList.objects.count(), 0) self.assertEqual(AccessControlList.objects.count(), 0)
def test_object_acl_detail_view(self): def test_object_acl_detail_view(self):
@@ -112,7 +99,7 @@ class ACLAPITestCase(BaseAPITestCase):
permission.pk permission.pk
) )
) )
self.assertEqual(response.status_code, 204) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(self.acl.permissions.count(), 0) self.assertEqual(self.acl.permissions.count(), 0)
def test_object_acl_permission_detail_view(self): def test_object_acl_permission_detail_view(self):
@@ -162,7 +149,7 @@ class ACLAPITestCase(BaseAPITestCase):
), data={'permission_pk': permission_acl_view.pk} ), data={'permission_pk': permission_acl_view.pk}
) )
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertQuerysetEqual( self.assertQuerysetEqual(
ordered=False, qs=self.acl.permissions.all(), values=( ordered=False, qs=self.acl.permissions.all(), values=(
repr(permission_document_view.stored_permission), repr(permission_document_view.stored_permission),
@@ -180,7 +167,7 @@ class ACLAPITestCase(BaseAPITestCase):
), data={'role_pk': self.role.pk} ), data={'role_pk': self.role.pk}
) )
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual( self.assertEqual(
self.document.acls.first().role, self.role self.document.acls.first().role, self.role
) )
@@ -205,7 +192,7 @@ class ACLAPITestCase(BaseAPITestCase):
} }
) )
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual( self.assertEqual(
self.document.acls.first().content_object, self.document self.document.acls.first().content_object, self.document
) )

View File

@@ -26,17 +26,17 @@ class PermissionTestCase(BaseTestCase):
label=TEST_DOCUMENT_TYPE_2_LABEL label=TEST_DOCUMENT_TYPE_2_LABEL
) )
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document_1 = self.document_type_1.new_document( self.document_1 = self.document_type_1.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document_2 = self.document_type_1.new_document( self.document_2 = self.document_type_1.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document_3 = self.document_type_2.new_document( self.document_3 = self.document_type_2.new_document(
file_object=file_object file_object=file_object
) )

View File

@@ -5,10 +5,10 @@ from django.test import override_settings
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_text from django.utils.encoding import force_text
from rest_framework import status
from rest_framework.test import APITestCase from rest_framework.test import APITestCase
from documents.models import DocumentType from documents.tests import DocumentTestMixin
from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH
from user_management.tests.literals import ( from user_management.tests.literals import (
TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME
) )
@@ -19,10 +19,12 @@ from .literals import TEST_CABINET_EDITED_LABEL, TEST_CABINET_LABEL
@override_settings(OCR_AUTO_OCR=False) @override_settings(OCR_AUTO_OCR=False)
class CabinetAPITestCase(APITestCase): class CabinetAPITestCase(DocumentTestMixin, APITestCase):
""" """
Test the cabinet API endpoints Test the cabinet API endpoints
""" """
auto_upload_document = False
def setUp(self): def setUp(self):
super(CabinetAPITestCase, self).setUp() super(CabinetAPITestCase, self).setUp()
@@ -35,28 +37,14 @@ class CabinetAPITestCase(APITestCase):
username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD
) )
self.document_type = DocumentType.objects.create( self.document = self.upload_document()
label=TEST_DOCUMENT_TYPE_LABEL self.document_2 = self.upload_document()
)
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document = self.document_type.new_document(
file_object=file_object,
)
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document_2 = self.document_type.new_document(
file_object=file_object,
)
def tearDown(self):
self.document_type.delete()
super(CabinetAPITestCase, self).tearDown()
def test_cabinet_create(self): def test_cabinet_create(self):
response = self.client.post( response = self.client.post(
reverse('rest_api:cabinet-list'), {'label': TEST_CABINET_LABEL} reverse('rest_api:cabinet-list'), {'label': TEST_CABINET_LABEL}
) )
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
cabinet = Cabinet.objects.first() cabinet = Cabinet.objects.first()
@@ -74,6 +62,7 @@ class CabinetAPITestCase(APITestCase):
) )
} }
) )
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
cabinet = Cabinet.objects.first() cabinet = Cabinet.objects.first()
@@ -94,6 +83,7 @@ class CabinetAPITestCase(APITestCase):
) )
} }
) )
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
cabinet = Cabinet.objects.first() cabinet = Cabinet.objects.first()
@@ -114,12 +104,13 @@ class CabinetAPITestCase(APITestCase):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
cabinet.documents.add(self.document) cabinet.documents.add(self.document)
self.client.delete( response = self.client.delete(
reverse( reverse(
'rest_api:cabinet-document', 'rest_api:cabinet-document',
args=(cabinet.pk, self.document.pk) args=(cabinet.pk, self.document.pk)
) )
) )
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(cabinet.documents.count(), 0) self.assertEqual(cabinet.documents.count(), 0)
@@ -133,8 +124,11 @@ class CabinetAPITestCase(APITestCase):
args=(cabinet.pk, self.document.pk) args=(cabinet.pk, self.document.pk)
) )
) )
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['uuid'], force_text(self.document.uuid)) self.assertEqual(
response.data['uuid'], force_text(self.document.uuid)
)
def test_cabinet_document_list(self): def test_cabinet_document_list(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
@@ -143,6 +137,7 @@ class CabinetAPITestCase(APITestCase):
response = self.client.get( response = self.client.get(
reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)) reverse('rest_api:cabinet-document-list', args=(cabinet.pk,))
) )
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual( self.assertEqual(
response.data['results'][0]['uuid'], force_text(self.document.uuid) response.data['results'][0]['uuid'], force_text(self.document.uuid)
@@ -151,19 +146,21 @@ class CabinetAPITestCase(APITestCase):
def test_cabinet_delete(self): def test_cabinet_delete(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
self.client.delete( response = self.client.delete(
reverse('rest_api:cabinet-detail', args=(cabinet.pk,)) reverse('rest_api:cabinet-detail', args=(cabinet.pk,))
) )
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(Cabinet.objects.count(), 0) self.assertEqual(Cabinet.objects.count(), 0)
def test_cabinet_edit_via_patch(self): def test_cabinet_edit_via_patch(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
self.client.patch( response = self.client.patch(
reverse('rest_api:cabinet-detail', args=(cabinet.pk,)), reverse('rest_api:cabinet-detail', args=(cabinet.pk,)),
{'label': TEST_CABINET_EDITED_LABEL} {'label': TEST_CABINET_EDITED_LABEL}
) )
self.assertEqual(response.status_code, status.HTTP_200_OK)
cabinet.refresh_from_db() cabinet.refresh_from_db()
@@ -172,10 +169,11 @@ class CabinetAPITestCase(APITestCase):
def test_cabinet_edit_via_put(self): def test_cabinet_edit_via_put(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
self.client.put( response = self.client.put(
reverse('rest_api:cabinet-detail', args=(cabinet.pk,)), reverse('rest_api:cabinet-detail', args=(cabinet.pk,)),
{'label': TEST_CABINET_EDITED_LABEL} {'label': TEST_CABINET_EDITED_LABEL}
) )
self.assertEqual(response.status_code, status.HTTP_200_OK)
cabinet.refresh_from_db() cabinet.refresh_from_db()
@@ -184,11 +182,12 @@ class CabinetAPITestCase(APITestCase):
def test_cabinet_add_document(self): def test_cabinet_add_document(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
self.client.post( response = self.client.post(
reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)), { reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)), {
'documents_pk_list': '{}'.format(self.document.pk) 'documents_pk_list': '{}'.format(self.document.pk)
} }
) )
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertQuerysetEqual( self.assertQuerysetEqual(
cabinet.documents.all(), (repr(self.document),) cabinet.documents.all(), (repr(self.document),)
@@ -197,13 +196,14 @@ class CabinetAPITestCase(APITestCase):
def test_cabinet_add_multiple_documents(self): def test_cabinet_add_multiple_documents(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
self.client.post( response = self.client.post(
reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)), { reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)), {
'documents_pk_list': '{},{}'.format( 'documents_pk_list': '{},{}'.format(
self.document.pk, self.document_2.pk self.document.pk, self.document_2.pk
) )
} }
) )
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertQuerysetEqual( self.assertQuerysetEqual(
cabinet.documents.all(), map( cabinet.documents.all(), map(
@@ -220,8 +220,7 @@ class CabinetAPITestCase(APITestCase):
response = self.client.get( response = self.client.get(
reverse('rest_api:cabinet-list') reverse('rest_api:cabinet-list')
) )
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['results'][0]['label'], cabinet.label) self.assertEqual(response.data['results'][0]['label'], cabinet.label)
def test_cabinet_remove_document(self): def test_cabinet_remove_document(self):
@@ -229,12 +228,12 @@ class CabinetAPITestCase(APITestCase):
cabinet.documents.add(self.document) cabinet.documents.add(self.document)
self.client.delete( response = self.client.delete(
reverse( reverse(
'rest_api:cabinet-document', args=( 'rest_api:cabinet-document', args=(
cabinet.pk, self.document.pk cabinet.pk, self.document.pk
) )
), ),
) )
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(cabinet.documents.count(), 0) self.assertEqual(cabinet.documents.count(), 0)

View File

@@ -4,8 +4,7 @@ from django.core.exceptions import ValidationError
from django.test import override_settings from django.test import override_settings
from common.tests import BaseTestCase from common.tests import BaseTestCase
from documents.models import DocumentType from documents.tests import DocumentTestMixin
from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH
from ..models import Cabinet from ..models import Cabinet
@@ -13,22 +12,7 @@ from .literals import TEST_CABINET_LABEL
@override_settings(OCR_AUTO_OCR=False) @override_settings(OCR_AUTO_OCR=False)
class CabinetTestCase(BaseTestCase): class CabinetTestCase(DocumentTestMixin, BaseTestCase):
def setUp(self):
super(CabinetTestCase, self).setUp()
self.document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object:
self.document = self.document_type.new_document(
file_object=file_object
)
def tearDown(self):
self.document_type.delete()
super(CabinetTestCase, self).tearDown()
def test_cabinet_creation(self): def test_cabinet_creation(self):
cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)

View File

@@ -33,7 +33,7 @@ class CabinetDocumentUploadTestCase(GenericDocumentViewTestCase):
WizardStep.reregister_all() WizardStep.reregister_all()
def _request_upload_interactive_document_create_view(self): def _request_upload_interactive_document_create_view(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
return self.post( return self.post(
viewname='sources:upload_interactive', args=(self.source.pk,), viewname='sources:upload_interactive', args=(self.source.pk,),
data={ data={

View File

@@ -99,7 +99,7 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
self._checkout_document() self._checkout_document()
response = self._request_checkout_list_view() response = self._request_checkout_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertNotContains(response, text=self.document.uuid) self.assertNotContains(response=response, text=self.document.uuid)
def test_checkout_list_view_with_document_access(self): def test_checkout_list_view_with_document_access(self):
self._checkout_document() self._checkout_document()
@@ -108,7 +108,7 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
) )
response = self._request_checkout_list_view() response = self._request_checkout_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertNotContains(response, text=self.document.uuid) self.assertNotContains(response=response, text=self.document.uuid)
def test_checkout_list_view_with_checkout_access(self): def test_checkout_list_view_with_checkout_access(self):
self._checkout_document() self._checkout_document()
@@ -117,7 +117,7 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
) )
response = self._request_checkout_list_view() response = self._request_checkout_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertNotContains(response, text=self.document.uuid) self.assertNotContains(response=response, text=self.document.uuid)
def test_checkout_list_view_with_access(self): def test_checkout_list_view_with_access(self):
self._checkout_document() self._checkout_document()
@@ -129,4 +129,4 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
) )
response = self._request_checkout_list_view() response = self._request_checkout_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertContains(response, text=self.document.uuid) self.assertContains(response=response, text=self.document.uuid)

View File

@@ -47,7 +47,7 @@ class DocumentCheckoutTestCase(DocumentTestMixin, BaseTestCase):
) )
with self.assertRaises(NewDocumentVersionNotAllowed): with self.assertRaises(NewDocumentVersionNotAllowed):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object) self.document.new_version(file_object=file_object)
def test_checkin_in(self): def test_checkin_in(self):
@@ -107,7 +107,7 @@ class DocumentCheckoutTestCase(DocumentTestMixin, BaseTestCase):
NewVersionBlock.objects.block(document=self.document) NewVersionBlock.objects.block(document=self.document)
with self.assertRaises(NewDocumentVersionNotAllowed): with self.assertRaises(NewDocumentVersionNotAllowed):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object) self.document.new_version(file_object=file_object)

View File

@@ -21,6 +21,11 @@ from ..permissions import (
class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase): class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
def _request_document_check_in_view(self):
return self.post(
viewname='checkouts:checkin_document', args=(self.document.pk,),
)
def test_checkin_document_view_no_permission(self): def test_checkin_document_view_no_permission(self):
self.login_user() self.login_user()
@@ -33,12 +38,8 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
self.assertTrue(self.document.is_checked_out()) self.assertTrue(self.document.is_checked_out())
response = self.post( response = self._request_document_check_in_view()
'checkouts:checkin_document', args=(self.document.pk,), follow=True
)
self.assertEquals(response.status_code, 403) self.assertEquals(response.status_code, 403)
self.assertTrue(self.document.is_checked_out()) self.assertTrue(self.document.is_checked_out())
def test_checkin_document_view_with_access(self): def test_checkin_document_view_with_access(self):
@@ -61,33 +62,30 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_checkout_detail_view permission=permission_document_checkout_detail_view
) )
response = self.post( response = self._request_document_check_in_view()
'checkouts:checkin_document', args=(self.document.pk,), follow=True self.assertEquals(response.status_code, 302)
)
self.assertEquals(response.status_code, 200)
self.assertFalse(self.document.is_checked_out()) self.assertFalse(self.document.is_checked_out())
self.assertFalse( self.assertFalse(
DocumentCheckout.objects.is_document_checked_out( DocumentCheckout.objects.is_document_checked_out(
document=self.document document=self.document
) )
) )
def test_checkout_document_view_no_permission(self): def _request_document_checkout_view(self):
self.login_user() return self.post(
viewname='checkouts:checkout_document', args=(self.document.pk,),
response = self.post( data={
'checkouts:checkout_document', args=(self.document.pk,), data={
'expiration_datetime_0': 2, 'expiration_datetime_0': 2,
'expiration_datetime_1': TIME_DELTA_UNIT_DAYS, 'expiration_datetime_1': TIME_DELTA_UNIT_DAYS,
'block_new_version': True 'block_new_version': True
}, follow=True }
) )
self.assertEquals(response.status_code, 403) def test_checkout_document_view_no_permission(self):
self.login_user()
response = self._request_document_checkout_view()
self.assertEquals(response.status_code, 403)
self.assertFalse(self.document.is_checked_out()) self.assertFalse(self.document.is_checked_out())
def test_checkout_document_view_with_access(self): def test_checkout_document_view_with_access(self):
@@ -100,16 +98,8 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_checkout_detail_view permission=permission_document_checkout_detail_view
) )
response = self.post( response = self._request_document_checkout_view()
'checkouts:checkout_document', args=(self.document.pk,), data={ self.assertEquals(response.status_code, 302)
'expiration_datetime_0': 2,
'expiration_datetime_1': TIME_DELTA_UNIT_DAYS,
'block_new_version': True
}, follow=True
)
self.assertEquals(response.status_code, 200)
self.assertTrue(self.document.is_checked_out()) self.assertTrue(self.document.is_checked_out())
def test_document_new_version_after_checkout(self): def test_document_new_version_after_checkout(self):

View File

@@ -8,9 +8,6 @@ from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.core import management from django.core import management
if getattr(settings, 'COMMON_TEST_FILE_HANDLES', False):
import psutil
from acls.models import AccessControlList from acls.models import AccessControlList
from permissions.models import Role from permissions.models import Role
from permissions.tests.literals import TEST_ROLE_LABEL from permissions.tests.literals import TEST_ROLE_LABEL
@@ -21,6 +18,9 @@ from user_management.tests import (
from ..settings import setting_temporary_directory from ..settings import setting_temporary_directory
if getattr(settings, 'COMMON_TEST_FILE_HANDLES', False):
import psutil
class ContentTypeCheckMixin(object): class ContentTypeCheckMixin(object):
expected_content_type = 'text/html; charset=utf-8' expected_content_type = 'text/html; charset=utf-8'

View File

@@ -25,7 +25,7 @@ class DocumentSignatureLinksTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
def test_document_version_signature_detail_link_no_permission(self): def test_document_version_signature_detail_link_no_permission(self):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -41,7 +41,7 @@ class DocumentSignatureLinksTestCase(GenericDocumentViewTestCase):
self.assertEqual(resolved_link, None) self.assertEqual(resolved_link, None)
def test_document_version_signature_detail_link_with_permission(self): def test_document_version_signature_detail_link_with_permission(self):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -68,12 +68,12 @@ class DocumentSignatureLinksTestCase(GenericDocumentViewTestCase):
) )
def test_document_version_signature_delete_link_no_permission(self): def test_document_version_signature_delete_link_no_permission(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -90,12 +90,12 @@ class DocumentSignatureLinksTestCase(GenericDocumentViewTestCase):
self.assertEqual(resolved_link, None) self.assertEqual(resolved_link, None)
def test_document_version_signature_delete_link_with_permission(self): def test_document_version_signature_delete_link_with_permission(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)

View File

@@ -35,7 +35,7 @@ class DocumentSignaturesTestCase(BaseTestCase):
super(DocumentSignaturesTestCase, self).tearDown() super(DocumentSignaturesTestCase, self).tearDown()
def test_embedded_signature_no_key(self): def test_embedded_signature_no_key(self):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
signed_document = self.document_type.new_document( signed_document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -51,7 +51,7 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.signature_id, None) self.assertEqual(signature.signature_id, None)
def test_embedded_signature_post_key_verify(self): def test_embedded_signature_post_key_verify(self):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
signed_document = self.document_type.new_document( signed_document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -66,7 +66,7 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.key_id, TEST_KEY_ID) self.assertEqual(signature.key_id, TEST_KEY_ID)
self.assertEqual(signature.signature_id, None) self.assertEqual(signature.signature_id, None)
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
signature = EmbeddedSignature.objects.first() signature = EmbeddedSignature.objects.first()
@@ -74,10 +74,10 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID) self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID)
def test_embedded_signature_post_no_key_verify(self): def test_embedded_signature_post_no_key_verify(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
key = Key.objects.create(key_data=file_object.read()) key = Key.objects.create(key_data=file_object.read())
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
signed_document = self.document_type.new_document( signed_document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -99,10 +99,10 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.signature_id, None) self.assertEqual(signature.signature_id, None)
def test_embedded_signature_with_key(self): def test_embedded_signature_with_key(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
key = Key.objects.create(key_data=file_object.read()) key = Key.objects.create(key_data=file_object.read())
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
self.signed_document = self.document_type.new_document( self.signed_document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -120,12 +120,12 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID) self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID)
def test_detached_signature_no_key(self): def test_detached_signature_no_key(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -140,15 +140,15 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.public_key_fingerprint, None) self.assertEqual(signature.public_key_fingerprint, None)
def test_detached_signature_with_key(self): def test_detached_signature_with_key(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
key = Key.objects.create(key_data=file_object.read()) key = Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -163,12 +163,12 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.public_key_fingerprint, key.fingerprint) self.assertEqual(signature.public_key_fingerprint, key.fingerprint)
def test_detached_signature_post_key_verify(self): def test_detached_signature_post_key_verify(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -182,7 +182,7 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.key_id, TEST_KEY_ID) self.assertEqual(signature.key_id, TEST_KEY_ID)
self.assertEqual(signature.public_key_fingerprint, None) self.assertEqual(signature.public_key_fingerprint, None)
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
key = Key.objects.create(key_data=file_object.read()) key = Key.objects.create(key_data=file_object.read())
signature = DetachedSignature.objects.first() signature = DetachedSignature.objects.first()
@@ -190,15 +190,15 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.public_key_fingerprint, key.fingerprint) self.assertEqual(signature.public_key_fingerprint, key.fingerprint)
def test_detached_signature_post_no_key_verify(self): def test_detached_signature_post_no_key_verify(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
key = Key.objects.create(key_data=file_object.read()) key = Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -219,7 +219,7 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(signature.public_key_fingerprint, None) self.assertEqual(signature.public_key_fingerprint, None)
def test_document_no_signature(self): def test_document_no_signature(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -227,12 +227,12 @@ class DocumentSignaturesTestCase(BaseTestCase):
self.assertEqual(EmbeddedSignature.objects.count(), 0) self.assertEqual(EmbeddedSignature.objects.count(), 0)
def test_new_signed_version(self): def test_new_signed_version(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
signed_version = document.new_version( signed_version = document.new_version(
file_object=file_object, comment='test comment 1' file_object=file_object, comment='test comment 1'
) )
@@ -268,13 +268,13 @@ class EmbeddedSignaturesTestCase(BaseTestCase):
TEST_SIGNED_DOCUMENT_COUNT = 2 TEST_SIGNED_DOCUMENT_COUNT = 2
for count in range(TEST_UNSIGNED_DOCUMENT_COUNT): for count in range(TEST_UNSIGNED_DOCUMENT_COUNT):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
for count in range(TEST_SIGNED_DOCUMENT_COUNT): for count in range(TEST_SIGNED_DOCUMENT_COUNT):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -296,13 +296,13 @@ class EmbeddedSignaturesTestCase(BaseTestCase):
TEST_SIGNED_DOCUMENT_COUNT = 2 TEST_SIGNED_DOCUMENT_COUNT = 2
for count in range(TEST_UNSIGNED_DOCUMENT_COUNT): for count in range(TEST_UNSIGNED_DOCUMENT_COUNT):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
for count in range(TEST_SIGNED_DOCUMENT_COUNT): for count in range(TEST_SIGNED_DOCUMENT_COUNT):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -324,7 +324,7 @@ class EmbeddedSignaturesTestCase(BaseTestCase):
def test_signing(self): def test_signing(self):
key = Key.objects.create(key_data=TEST_KEY_DATA) key = Key.objects.create(key_data=TEST_KEY_DATA)
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )

View File

@@ -30,16 +30,22 @@ TEST_SIGNED_DOCUMENT_COUNT = 2
class SignaturesViewTestCase(GenericDocumentViewTestCase): class SignaturesViewTestCase(GenericDocumentViewTestCase):
def _request_document_version_signature_list_view(self, document):
return self.get(
viewname='signatures:document_version_signature_list',
args=(document.latest_version.pk,)
)
def test_signature_list_view_no_permission(self): def test_signature_list_view_no_permission(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -47,23 +53,21 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
response = self.get( response = self._request_document_version_signature_list_view(
'signatures:document_version_signature_list', document=document
args=(document.latest_version.pk,)
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_signature_list_view_with_access(self): def test_signature_list_view_with_access(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
DetachedSignature.objects.create( DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -76,24 +80,28 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_version_signature_view permission=permission_document_version_signature_view
) )
response = self.get( response = self._request_document_version_signature_list_view(
'signatures:document_version_signature_list', document=document
args=(document.latest_version.pk,)
) )
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['object_list'].count(), 1) self.assertEqual(response.context['object_list'].count(), 1)
def _request_document_version_signature_details_view(self, signature):
return self.get(
viewname='signatures:document_version_signature_details',
args=(signature.pk,)
)
def test_signature_detail_view_no_permission(self): def test_signature_detail_view_no_permission(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
signature = DetachedSignature.objects.create( signature = DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -101,23 +109,21 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
response = self.get( response = self._request_document_version_signature_details_view(
'signatures:document_version_signature_details', signature=signature
args=(signature.pk,)
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_signature_detail_view_with_access(self): def test_signature_detail_view_with_access(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
signature = DetachedSignature.objects.create( signature = DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -130,33 +136,37 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_version_signature_view permission=permission_document_version_signature_view
) )
response = self.get( response = self._request_document_version_signature_details_view(
'signatures:document_version_signature_details', signature=signature
args=(signature.pk,) )
self.assertContains(
response=response, text=signature.signature_id, status_code=200
) )
self.assertContains(response, signature.signature_id, status_code=200) def _request_document_version_signature_upload_view(self, document_version):
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
return self.post(
viewname='signatures:document_version_signature_upload',
args=(document_version.pk,),
data={'signature_file': file_object}
)
def test_signature_upload_view_no_permission(self): def test_signature_upload_view_no_permission(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
self.login_user() self.login_user()
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: response = self._request_document_version_signature_upload_view(
response = self.post( document_version=document.latest_version
'signatures:document_version_signature_upload', )
args=(document.latest_version.pk,),
data={'signature_file': file_object}
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(DetachedSignature.objects.count(), 0) self.assertEqual(DetachedSignature.objects.count(), 0)
def test_signature_upload_view_with_access(self): def test_signature_upload_view_with_access(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -168,23 +178,25 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_version_signature_upload permission=permission_document_version_signature_upload
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: response = self._request_document_version_signature_upload_view(
response = self.post( document_version=document.latest_version
'signatures:document_version_signature_upload', )
args=(document.latest_version.pk,),
data={'signature_file': file_object}
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(DetachedSignature.objects.count(), 1) self.assertEqual(DetachedSignature.objects.count(), 1)
def _request_document_version_signature_download_view(self, signature):
return self.get(
viewname='signatures:document_version_signature_download',
args=(signature.pk,),
)
def test_signature_download_view_no_permission(self): def test_signature_download_view_no_permission(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
signature = DetachedSignature.objects.create( signature = DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -192,20 +204,18 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
response = self.get( response = self._request_document_version_signature_download_view(
'signatures:document_version_signature_download', signature=signature
args=(signature.pk,),
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_signature_download_view_with_access(self): def test_signature_download_view_with_access(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
signature = DetachedSignature.objects.create( signature = DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -220,9 +230,8 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
self.expected_content_type = 'application/octet-stream; charset=utf-8' self.expected_content_type = 'application/octet-stream; charset=utf-8'
response = self.get( response = self._request_document_version_signature_download_view(
'signatures:document_version_signature_download', signature=signature
args=(signature.pk,),
) )
with signature.signature_file as file_object: with signature.signature_file as file_object:
@@ -230,16 +239,22 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
self, response=response, content=file_object.read(), self, response=response, content=file_object.read(),
) )
def _request_document_version_signature_delete_view(self, signature):
return self.post(
viewname='signatures:document_version_signature_delete',
args=(signature.pk,)
)
def test_signature_delete_view_no_permission(self): def test_signature_delete_view_no_permission(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
signature = DetachedSignature.objects.create( signature = DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -252,24 +267,22 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_version_signature_view permission=permission_document_version_signature_view
) )
response = self.post( response = self._request_document_version_signature_delete_view(
'signatures:document_version_signature_delete', signature=signature
args=(signature.pk,)
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(DetachedSignature.objects.count(), 1) self.assertEqual(DetachedSignature.objects.count(), 1)
def test_signature_delete_view_with_access(self): def test_signature_delete_view_with_access(self):
with open(TEST_KEY_FILE, 'rb') as file_object: with open(TEST_KEY_FILE, mode='rb') as file_object:
Key.objects.create(key_data=file_object.read()) Key.objects.create(key_data=file_object.read())
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
document = self.document_type.new_document( document = self.document_type.new_document(
file_object=file_object file_object=file_object
) )
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object: with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
signature = DetachedSignature.objects.create( signature = DetachedSignature.objects.create(
document_version=document.latest_version, document_version=document.latest_version,
signature_file=File(file_object) signature_file=File(file_object)
@@ -286,14 +299,17 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_version_signature_view permission=permission_document_version_signature_view
) )
response = self.post( response = self._request_document_version_signature_delete_view(
'signatures:document_version_signature_delete', signature=signature
args=(signature.pk,), follow=True
) )
self.assertEqual(response.status_code, 302)
self.assertContains(response, 'deleted', status_code=200)
self.assertEqual(DetachedSignature.objects.count(), 0) 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_missing_signature_verify_view_no_permission(self): def test_missing_signature_verify_view_no_permission(self):
# Silence converter logging # Silence converter logging
logging.getLogger('converter.backends').setLevel(logging.CRITICAL) logging.getLogger('converter.backends').setLevel(logging.CRITICAL)
@@ -304,13 +320,13 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
old_hooks = DocumentVersion._post_save_hooks old_hooks = DocumentVersion._post_save_hooks
DocumentVersion._post_save_hooks = {} DocumentVersion._post_save_hooks = {}
for count in range(TEST_UNSIGNED_DOCUMENT_COUNT): for count in range(TEST_UNSIGNED_DOCUMENT_COUNT):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
for count in range(TEST_SIGNED_DOCUMENT_COUNT): for count in range(TEST_SIGNED_DOCUMENT_COUNT):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -324,10 +340,7 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
response = self.post( response = self._request_all_document_version_signature_verify_view()
'signatures:all_document_version_signature_verify', follow=True
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual( self.assertEqual(
@@ -345,13 +358,13 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
old_hooks = DocumentVersion._post_save_hooks old_hooks = DocumentVersion._post_save_hooks
DocumentVersion._post_save_hooks = {} DocumentVersion._post_save_hooks = {}
for count in range(TEST_UNSIGNED_DOCUMENT_COUNT): for count in range(TEST_UNSIGNED_DOCUMENT_COUNT):
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
for count in range(TEST_SIGNED_DOCUMENT_COUNT): for count in range(TEST_SIGNED_DOCUMENT_COUNT):
with open(TEST_SIGNED_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object file_object=file_object
) )
@@ -369,11 +382,8 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
permission=permission_document_version_signature_verify permission=permission_document_version_signature_verify
) )
response = self.post( response = self._request_all_document_version_signature_verify_view()
'signatures:all_document_version_signature_verify', follow=True self.assertEqual(response.status_code, 302)
)
self.assertContains(response, 'queued', status_code=200)
self.assertEqual( self.assertEqual(
EmbeddedSignature.objects.unsigned_document_versions().count(), EmbeddedSignature.objects.unsigned_document_versions().count(),

View File

@@ -287,7 +287,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
self.login_user() self.login_user()
def _create_document(self): def _create_document(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document_2 = self.document_type.new_document( self.document_2 = self.document_type.new_document(
file_object=file_object file_object=file_object
) )

View File

@@ -155,7 +155,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.login_user() self.login_user()
def _request_document_upload(self): def _request_document_upload(self):
with open(TEST_DOCUMENT_PATH, 'rb') as file_descriptor: with open(TEST_DOCUMENT_PATH, mode='rb') as file_descriptor:
return self.post( return self.post(
viewname='rest_api:document-list', data={ viewname='rest_api:document-list', data={
'document_type': self.document_type.pk, 'document_type': self.document_type.pk,
@@ -208,7 +208,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
# is the latest. # is the latest.
time.sleep(1) time.sleep(1)
with open(TEST_DOCUMENT_PATH, 'rb') as file_descriptor: with open(TEST_DOCUMENT_PATH, mode='rb') as file_descriptor:
return self.post( return self.post(
viewname='rest_api:document-version-list', args=( viewname='rest_api:document-version-list', args=(
self.document.pk, self.document.pk,
@@ -245,7 +245,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
# Needed by MySQL as milliseconds value is not store in timestamp field # Needed by MySQL as milliseconds value is not store in timestamp field
time.sleep(1) time.sleep(1)
with open(TEST_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object) self.document.new_version(file_object=file_object)
def _request_document_version_revert(self): def _request_document_version_revert(self):

View File

@@ -16,13 +16,16 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
super(DeletedDocumentTestCase, self).setUp() super(DeletedDocumentTestCase, self).setUp()
self.login_user() self.login_user()
def _request_document_restore_view(self):
return self.post(
viewname='documents:document_restore', args=(self.document.pk,)
)
def test_document_restore_view_no_permission(self): def test_document_restore_view_no_permission(self):
self.document.delete() self.document.delete()
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
response = self.post( response = self._request_document_restore_view()
'documents:document_restore', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(DeletedDocument.objects.count(), 1) self.assertEqual(DeletedDocument.objects.count(), 1)
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
@@ -34,18 +37,18 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_restore obj=self.document, permission=permission_document_restore
) )
response = self.post( response = self._request_document_restore_view()
'documents:document_restore', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 0) self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 1) self.assertEqual(Document.objects.count(), 1)
def test_document_trash_no_permissions(self): def _request_document_trash_view(self):
response = self.post( return self.post(
'documents:document_trash', args=(self.document.pk,) viewname='documents:document_trash', args=(self.document.pk,)
) )
def test_document_trash_no_permissions(self):
response = self._request_document_trash_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(DeletedDocument.objects.count(), 0) self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 1) self.assertEqual(Document.objects.count(), 1)
@@ -55,22 +58,22 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_trash obj=self.document, permission=permission_document_trash
) )
response = self.post( response = self._request_document_trash_view()
'documents:document_trash', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 1) self.assertEqual(DeletedDocument.objects.count(), 1)
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
def _request_document_delete_view(self):
return self.post(
viewname='documents:document_delete', args=(self.document.pk,),
)
def test_document_delete_no_permissions(self): def test_document_delete_no_permissions(self):
self.document.delete() self.document.delete()
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
self.assertEqual(DeletedDocument.objects.count(), 1) self.assertEqual(DeletedDocument.objects.count(), 1)
response = self.post( response = self._request_document_delete_view()
'documents:document_delete', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
self.assertEqual(DeletedDocument.objects.count(), 1) self.assertEqual(DeletedDocument.objects.count(), 1)
@@ -84,19 +87,21 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_delete obj=self.document, permission=permission_document_delete
) )
response = self.post( response = self._request_document_delete_view()
'documents:document_delete', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 0) self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
def _request_document_list_deleted_view(self):
return self.get(viewname='documents:document_list_deleted')
def test_deleted_document_list_view_no_permissions(self): def test_deleted_document_list_view_no_permissions(self):
self.document.delete() self.document.delete()
response = self.get('documents:document_list_deleted') response = self._request_document_list_deleted_view()
self.assertNotContains(
self.assertNotContains(response, self.document.label, status_code=200) response=response, text=self.document.label, status_code=200
)
def test_deleted_document_list_view_with_access(self): def test_deleted_document_list_view_with_access(self):
self.document.delete() self.document.delete()
@@ -104,6 +109,8 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self.get('documents:document_list_deleted') response = self._request_document_list_deleted_view()
self.assertContains(response, self.document.label, status_code=200) self.assertContains(
response=response, text=self.document.label, status_code=200
)

View File

@@ -14,7 +14,7 @@ class DocumentPageViewTestCase(GenericDocumentViewTestCase):
def _document_page_list_view(self): def _document_page_list_view(self):
return self.get( return self.get(
'documents:document_pages', args=(self.document.pk,) viewname='documents:document_pages', args=(self.document.pk,)
) )
def test_document_page_list_view_no_permission(self): def test_document_page_list_view_no_permission(self):
@@ -27,5 +27,5 @@ class DocumentPageViewTestCase(GenericDocumentViewTestCase):
) )
response = self._document_page_list_view() response = self._document_page_list_view()
self.assertContains( self.assertContains(
response, text=self.document.label, status_code=200 response=response, text=self.document.label, status_code=200
) )

View File

@@ -17,64 +17,59 @@ class DocumentVersionTestCase(GenericDocumentViewTestCase):
super(DocumentVersionTestCase, self).setUp() super(DocumentVersionTestCase, self).setUp()
self.login_user() self.login_user()
def test_document_version_list_no_permission(self): def _upload_new_version(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version( self.document.new_version(
comment=TEST_VERSION_COMMENT, file_object=file_object comment=TEST_VERSION_COMMENT, file_object=file_object
) )
response = self.get( def _request_document_version_list_view(self):
'documents:document_version_list', args=(self.document.pk,) return self.get(
viewname='documents:document_version_list',
args=(self.document.pk,)
) )
def test_document_version_list_no_permission(self):
self._upload_new_version()
response = self._request_document_version_list_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_version_list_with_access(self): def test_document_version_list_with_access(self):
self._upload_new_version()
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_version_view obj=self.document, permission=permission_document_version_view
) )
response = self._request_document_version_list_view()
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: self.assertContains(
self.document.new_version( response=response, text=TEST_VERSION_COMMENT, status_code=200
comment=TEST_VERSION_COMMENT, file_object=file_object
)
response = self.get(
'documents:document_version_list', args=(self.document.pk,)
) )
self.assertContains(response, TEST_VERSION_COMMENT, status_code=200) def _request_document_version_revert_view(self, document_version):
return self.post(
viewname='documents:document_version_revert',
args=(document_version.pk,)
)
def test_document_version_revert_no_permission(self): def test_document_version_revert_no_permission(self):
first_version = self.document.latest_version first_version = self.document.latest_version
self._upload_new_version()
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: response = self._request_document_version_revert_view(
self.document.new_version( document_version=first_version
file_object=file_object
)
response = self.post(
'documents:document_version_revert', args=(first_version.pk,)
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(self.document.versions.count(), 2) self.assertEqual(self.document.versions.count(), 2)
def test_document_version_revert_with_access(self): def test_document_version_revert_with_access(self):
first_version = self.document.latest_version first_version = self.document.latest_version
self._upload_new_version()
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object:
self.document.new_version(
file_object=file_object
)
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_version_revert obj=self.document, permission=permission_document_version_revert
) )
response = self.post( response = self._request_document_version_revert_view(
'documents:document_version_revert', args=(first_version.pk,), document_version=first_version
) )
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.versions.count(), 1) self.assertEqual(self.document.versions.count(), 1)

View File

@@ -32,28 +32,30 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
super(DocumentsViewsTestCase, self).setUp() super(DocumentsViewsTestCase, self).setUp()
self.login_user() self.login_user()
def test_document_view_no_permissions(self): def _request_document_properties_view(self):
response = self.get( return self.get(
'documents:document_properties', args=(self.document.pk,) viewname='documents:document_properties',
args=(self.document.pk,)
) )
def test_document_view_no_permissions(self):
response = self._request_document_properties_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_view_with_permissions(self): def test_document_view_with_permissions(self):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self.get( response = self._request_document_properties_view()
'documents:document_properties', args=(self.document.pk,), self.assertContains(
follow=True response=response, text=self.document.label, status_code=200
) )
self.assertContains( def _request_document_list_view(self):
response, 'roperties for document', status_code=200 return self.get(viewname='documents:document_list')
)
def test_document_list_view_no_permissions(self): def test_document_list_view_no_permissions(self):
response = self.get('documents:document_list') response = self._request_document_list_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['object_list'].count(), 0) self.assertEqual(response.context['object_list'].count(), 0)
@@ -61,12 +63,14 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self.get('documents:document_list') response = self._request_document_list_view()
self.assertContains(response, self.document.label, status_code=200) self.assertContains(
response=response, text=self.document.label, status_code=200
)
def _request_document_type_edit(self, document_type): def _request_document_type_edit(self, document_type):
return self.post( return self.post(
'documents:document_document_type_edit', viewname='documents:document_document_type_edit',
args=(self.document.pk,), args=(self.document.pk,),
data={'document_type': document_type.pk} data={'document_type': document_type.pk}
) )
@@ -85,7 +89,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
) )
self.assertContains( self.assertContains(
response, text='Select a valid choice', status_code=200 response=response, text='Select a valid choice', status_code=200
) )
self.assertEqual( self.assertEqual(
@@ -122,7 +126,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
def _request_multiple_document_type_edit(self, document_type): def _request_multiple_document_type_edit(self, document_type):
return self.post( return self.post(
'documents:document_multiple_document_type_edit', viewname='documents:document_multiple_document_type_edit',
data={ data={
'id_list': self.document.pk, 'id_list': self.document.pk,
'document_type': document_type.pk 'document_type': document_type.pk
@@ -143,7 +147,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
) )
self.assertContains( self.assertContains(
response, text='Select a valid choice.', status_code=200 response=response, text='Select a valid choice.', status_code=200
) )
self.assertEqual( self.assertEqual(
@@ -178,15 +182,15 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
def _request_document_download_form_view(self): def _request_document_download_form_view(self):
return self.get( return self.get(
'documents:document_download_form', args=(self.document.pk,), viewname='documents:document_download_form',
follow=True, args=(self.document.pk,),
) )
def test_document_download_form_view_no_permission(self): def test_document_download_form_view_no_permission(self):
response = self._request_document_download_form_view() response = self._request_document_download_form_view()
self.assertNotContains( self.assertNotContains(
response, text=self.document.label, status_code=200 response=response, text=self.document.label, status_code=200
) )
def test_document_download_form_view_with_access(self): def test_document_download_form_view_with_access(self):
@@ -196,14 +200,16 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
response = self._request_document_download_form_view() response = self._request_document_download_form_view()
self.assertContains( self.assertContains(
response, text=self.document.label, status_code=200 response=response, text=self.document.label, status_code=200
)
def _request_document_download_view(self):
return self.get(
viewname='documents:document_download', args=(self.document.pk,)
) )
def test_document_download_view_no_permission(self): def test_document_download_view_no_permission(self):
response = self.get( response = self._request_document_download_view()
'documents:document_download', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_download_view_with_permission(self): def test_document_download_view_with_permission(self):
@@ -216,25 +222,24 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_download obj=self.document, permission=permission_document_download
) )
response = self.get( response = self._request_document_download_view()
'documents:document_download', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
with self.document.open() as file_object: with self.document.open() as file_object:
self.assert_download_response( self.assert_download_response(
response, content=file_object.read(), response=response, content=file_object.read(),
basename=TEST_SMALL_DOCUMENT_FILENAME, basename=TEST_SMALL_DOCUMENT_FILENAME,
mime_type=self.document.file_mimetype mime_type=self.document.file_mimetype
) )
def test_document_multiple_download_view_no_permission(self): def _request_document_multiple_download_view(self):
response = self.get( return self.get(
'documents:document_multiple_download', viewname='documents:document_multiple_download',
data={'id_list': self.document.pk} data={'id_list': self.document.pk}
) )
def test_document_multiple_download_view_no_permission(self):
response = self._request_document_multiple_download_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_multiple_download_view_with_permission(self): def test_document_multiple_download_view_with_permission(self):
@@ -247,16 +252,12 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_download obj=self.document, permission=permission_document_download
) )
response = self.get( response = self._request_document_multiple_download_view()
'documents:document_multiple_download',
data={'id_list': self.document.pk}
)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
with self.document.open() as file_object: with self.document.open() as file_object:
self.assert_download_response( self.assert_download_response(
response, content=file_object.read(), response=response, content=file_object.read(),
basename=TEST_SMALL_DOCUMENT_FILENAME, basename=TEST_SMALL_DOCUMENT_FILENAME,
mime_type=self.document.file_mimetype mime_type=self.document.file_mimetype
) )
@@ -264,14 +265,13 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
def _request_document_version_download(self, data=None): def _request_document_version_download(self, data=None):
data = data or {} data = data or {}
return self.get( return self.get(
'documents:document_version_download', args=( viewname='documents:document_version_download', args=(
self.document.latest_version.pk, self.document.latest_version.pk,
), data=data ), data=data
) )
def test_document_version_download_view_no_permission(self): def test_document_version_download_view_no_permission(self):
response = self._request_document_version_download() response = self._request_document_version_download()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_version_download_view_with_permission(self): def test_document_version_download_view_with_permission(self):
@@ -285,12 +285,11 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_download obj=self.document, permission=permission_document_download
) )
response = self._request_document_version_download() response = self._request_document_version_download()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
with self.document.open() as file_object: with self.document.open() as file_object:
self.assert_download_response( self.assert_download_response(
response, content=file_object.read(), response=response, content=file_object.read(),
basename=force_text(self.document.latest_version), basename=force_text(self.document.latest_version),
mime_type='{}; charset=utf-8'.format( mime_type='{}; charset=utf-8'.format(
self.document.latest_version.mimetype self.document.latest_version.mimetype
@@ -315,7 +314,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
with self.document.open() as file_object: with self.document.open() as file_object:
self.assert_download_response( self.assert_download_response(
response, content=file_object.read(), response=response, content=file_object.read(),
basename=self.document.latest_version.get_rendered_string( basename=self.document.latest_version.get_rendered_string(
preserve_extension=True preserve_extension=True
), mime_type='{}; charset=utf-8'.format( ), mime_type='{}; charset=utf-8'.format(
@@ -323,14 +322,17 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
) )
) )
def _request_document_update_page_count_view(self):
return self.post(
viewname='documents:document_update_page_count',
args=(self.document.pk,)
)
def test_document_update_page_count_view_no_permission(self): def test_document_update_page_count_view_no_permission(self):
self.document.pages.all().delete() self.document.pages.all().delete()
self.assertEqual(self.document.pages.count(), 0) self.assertEqual(self.document.pages.count(), 0)
response = self.post( response = self._request_document_update_page_count_view()
'documents:document_update_page_count', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.pages.count(), 0) self.assertEqual(self.document.pages.count(), 0)
@@ -343,22 +345,21 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_document_tools) self.grant_permission(permission=permission_document_tools)
response = self.post( response = self._request_document_update_page_count_view()
'documents:document_update_page_count',
args=(self.document.pk,)
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.pages.count(), page_count) self.assertEqual(self.document.pages.count(), page_count)
def _request_document_multiple_update_page_count_view(self):
return self.post(
viewname='documents:document_multiple_update_page_count',
data={'id_list': self.document.pk}
)
def test_document_multiple_update_page_count_view_no_permission(self): def test_document_multiple_update_page_count_view_no_permission(self):
self.document.pages.all().delete() self.document.pages.all().delete()
self.assertEqual(self.document.pages.count(), 0) self.assertEqual(self.document.pages.count(), 0)
response = self.post( response = self._request_document_multiple_update_page_count_view()
'documents:document_multiple_update_page_count',
data={'id_list': self.document.pk}
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.pages.count(), 0) self.assertEqual(self.document.pages.count(), 0)
@@ -369,13 +370,16 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_document_tools) self.grant_permission(permission=permission_document_tools)
response = self.post( response = self._request_document_multiple_update_page_count_view()
'documents:document_multiple_update_page_count',
data={'id_list': self.document.pk}
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.pages.count(), page_count) self.assertEqual(self.document.pages.count(), page_count)
def _request_document_clear_transformations_view(self):
return self.post(
viewname='documents:document_clear_transformations',
args=(self.document.pk,)
)
def test_document_clear_transformations_view_no_permission(self): def test_document_clear_transformations_view_no_permission(self):
document_page = self.document.pages.first() document_page = self.document.pages.first()
content_type = ContentType.objects.get_for_model(document_page) content_type = ContentType.objects.get_for_model(document_page)
@@ -394,11 +398,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self.post( response = self._request_document_clear_transformations_view()
'documents:document_clear_transformations',
args=(self.document.pk,)
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual( self.assertQuerysetEqual(
Transformation.objects.get_for_model(document_page), Transformation.objects.get_for_model(document_page),
@@ -425,16 +425,18 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self.post( response = self._request_document_clear_transformations_view()
'documents:document_clear_transformations',
args=(self.document.pk,)
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual( self.assertEqual(
Transformation.objects.get_for_model(document_page).count(), 0 Transformation.objects.get_for_model(document_page).count(), 0
) )
def _request_document_multiple_clear_transformations(self):
return self.post(
viewname='documents:document_multiple_clear_transformations',
data={'id_list': self.document.pk}
)
def test_document_multiple_clear_transformations_view_no_permission(self): def test_document_multiple_clear_transformations_view_no_permission(self):
document_page = self.document.pages.first() document_page = self.document.pages.first()
content_type = ContentType.objects.get_for_model(document_page) content_type = ContentType.objects.get_for_model(document_page)
@@ -451,11 +453,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_document_view) self.grant_permission(permission=permission_document_view)
response = self.post( response = self._request_document_multiple_clear_transformations()
'documents:document_multiple_clear_transformations',
data={'id_list': self.document.pk}
)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual( self.assertQuerysetEqual(
Transformation.objects.get_for_model(document_page), Transformation.objects.get_for_model(document_page),
@@ -483,27 +481,21 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_transformation_delete obj=self.document, permission=permission_transformation_delete
) )
response = self.post( response = self._request_document_multiple_clear_transformations()
'documents:document_multiple_clear_transformations', self.assertEqual(response.status_code, 302)
data={'id_list': self.document.pk}, follow=True
)
self.assertEqual(response.status_code, 200)
self.assertEqual( self.assertEqual(
Transformation.objects.get_for_model(document_page).count(), 0 Transformation.objects.get_for_model(document_page).count(), 0
) )
def _empty_trash(self): def _request_empty_trash_view(self):
return self.post('documents:trash_can_empty') return self.post(viewname='documents:trash_can_empty')
def test_trash_can_empty_view_no_permission(self): def test_trash_can_empty_view_no_permission(self):
self.document.delete() self.document.delete()
self.assertEqual(DeletedDocument.objects.count(), 1) self.assertEqual(DeletedDocument.objects.count(), 1)
response = self._empty_trash() response = self._request_empty_trash_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(DeletedDocument.objects.count(), 1) self.assertEqual(DeletedDocument.objects.count(), 1)
def test_trash_can_empty_view_with_permission(self): def test_trash_can_empty_view_with_permission(self):
@@ -512,39 +504,39 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_empty_trash) self.grant_permission(permission=permission_empty_trash)
response = self._empty_trash() response = self._request_empty_trash_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 0) self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
def test_document_page_view_no_permissions(self): def _request_document_page_view(self, document_page):
response = self.get( return self.get(
'documents:document_page_view', args=( viewname='documents:document_page_view', args=(
self.document.pages.first().pk, document_page.pk,
) )
) )
def test_document_page_view_no_permissions(self):
response = self._request_document_page_view(
document_page=self.document.pages.first()
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_page_view_with_access(self): def test_document_page_view_with_access(self):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self.get( response = self._request_document_page_view(
'documents:document_page_view', args=( document_page=self.document.pages.first()
self.document.pages.first().pk,
),
follow=True
) )
self.assertContains( self.assertContains(
response, force_text(self.document.pages.first()), status_code=200 response=response, text=force_text(self.document.pages.first()),
status_code=200
) )
def _request_print_view(self): def _request_document_print_view(self):
return self.get( return self.get(
'documents:document_print', args=( viewname='documents:document_print', args=(
self.document.pk, self.document.pk,
), data={ ), data={
'page_group': PAGE_RANGE_ALL 'page_group': PAGE_RANGE_ALL
@@ -552,14 +544,14 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
) )
def test_document_print_view_no_access(self): def test_document_print_view_no_access(self):
response = self ._request_print_view() response = self._request_document_print_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_document_print_view_with_access(self): def test_document_print_view_with_access(self):
self.grant_access( self.grant_access(
obj=self.document, permission=permission_document_print obj=self.document, permission=permission_document_print
) )
response = self._request_print_view() response = self._request_document_print_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@@ -571,7 +563,8 @@ class DocumentsQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, GenericD
def _request_document_quick_label_edit_view(self, extra_data=None): def _request_document_quick_label_edit_view(self, extra_data=None):
data = { data = {
'document_type_available_filenames': self.document_type_filename.pk, 'document_type_available_filenames': self.document_type_filename.pk,
'label': '' # View needs at least an empty label for quick 'label': ''
# View needs at least an empty label for quick
# label to work. Cause is unknown. # label to work. Cause is unknown.
} }
data.update(extra_data or {}) data.update(extra_data or {})

View File

@@ -16,25 +16,26 @@ class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
def _upload_duplicate_document(self): def _upload_duplicate_document(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document_duplicate = self.document_type.new_document( self.document_duplicate = self.document_type.new_document(
file_object=file_object, label=TEST_SMALL_DOCUMENT_FILENAME file_object=file_object, label=TEST_SMALL_DOCUMENT_FILENAME
) )
def _request_duplicated_document_list(self): def _request_duplicated_document_list_view(self):
return self.get('documents:duplicated_document_list') return self.get(viewname='documents:duplicated_document_list')
def _request_document_duplicates_list(self): def _request_document_duplicates_list_view(self):
return self.get( return self.get(
'documents:document_duplicates_list', args=(self.document.pk,) viewname='documents:document_duplicates_list',
args=(self.document.pk,)
) )
def test_duplicated_document_list_no_permissions(self): def test_duplicated_document_list_no_permissions(self):
self._upload_duplicate_document() self._upload_duplicate_document()
response = self._request_duplicated_document_list() response = self._request_duplicated_document_list_view()
self.assertNotContains( self.assertNotContains(
response, text=self.document.label, status_code=200 response=response, text=self.document.label, status_code=200
) )
def test_duplicated_document_list_with_access(self): def test_duplicated_document_list_with_access(self):
@@ -46,15 +47,15 @@ class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document_duplicate, obj=self.document_duplicate,
permission=permission_document_view permission=permission_document_view
) )
response = self._request_duplicated_document_list() response = self._request_duplicated_document_list_view()
self.assertContains( self.assertContains(
response, text=self.document.label, status_code=200 response=response, text=self.document.label, status_code=200
) )
def test_document_duplicates_list_no_permissions(self): def test_document_duplicates_list_no_permissions(self):
self._upload_duplicate_document() self._upload_duplicate_document()
response = self._request_document_duplicates_list() response = self._request_document_duplicates_list_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
@@ -67,8 +68,8 @@ class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document_duplicate, obj=self.document_duplicate,
permission=permission_document_view permission=permission_document_view
) )
response = self._request_document_duplicates_list() response = self._request_document_duplicates_list_view()
self.assertContains( self.assertContains(
response, text=self.document.label, status_code=200 response=response, text=self.document.label, status_code=200
) )

View File

@@ -52,7 +52,7 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
self.expected_content_type = 'image/png; charset=utf-8' self.expected_content_type = 'image/png; charset=utf-8'
response = self.get( response = self.get(
'documents:document_download', args=(self.document.pk,), viewname='documents:document_download', args=(self.document.pk,),
) )
# Download the file to close the file descriptor # Download the file to close the file descriptor
@@ -76,7 +76,7 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
Action.objects.all().delete() Action.objects.all().delete()
response = self.get( response = self.get(
'documents:document_preview', args=(self.document.pk,) viewname='documents:document_preview', args=(self.document.pk,)
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
@@ -93,7 +93,7 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
permission_document_view.stored_permission permission_document_view.stored_permission
) )
self.get( self.get(
'documents:document_preview', args=(self.document.pk,), viewname='documents:document_preview', args=(self.document.pk,),
) )
event = Action.objects.any(obj=self.document).first() event = Action.objects.any(obj=self.document).first()

View File

@@ -23,7 +23,7 @@ from .literals import TEST_SMALL_DOCUMENT_PATH
class DocumentsLinksTestCase(GenericDocumentViewTestCase): class DocumentsLinksTestCase(GenericDocumentViewTestCase):
def test_document_version_revert_link_no_permission(self): def test_document_version_revert_link_no_permission(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object) self.document.new_version(file_object=file_object)
self.assertTrue(self.document.versions.count(), 2) self.assertTrue(self.document.versions.count(), 2)
@@ -39,9 +39,9 @@ class DocumentsLinksTestCase(GenericDocumentViewTestCase):
def test_document_version_revert_link_with_permission(self): def test_document_version_revert_link_with_permission(self):
# Needed by MySQL as milliseconds value is not store in timestamp # Needed by MySQL as milliseconds value is not store in timestamp
# field # field
time.sleep(2) time.sleep(1.01)
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object) self.document.new_version(file_object=file_object)
self.assertTrue(self.document.versions.count(), 2) self.assertTrue(self.document.versions.count(), 2)

View File

@@ -18,7 +18,7 @@ from .literals import (
TEST_PDF_INDIRECT_ROTATE_PATH, TEST_OFFICE_DOCUMENT_PATH, TEST_PDF_INDIRECT_ROTATE_PATH, TEST_OFFICE_DOCUMENT_PATH,
TEST_SMALL_DOCUMENT_CHECKSUM, TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_CHECKSUM, TEST_SMALL_DOCUMENT_FILENAME,
TEST_SMALL_DOCUMENT_MIMETYPE, TEST_SMALL_DOCUMENT_PATH, TEST_SMALL_DOCUMENT_MIMETYPE, TEST_SMALL_DOCUMENT_PATH,
TEST_SMALL_DOCUMENT_SIZE, TEST_DOCUMENT_FILENAME TEST_SMALL_DOCUMENT_SIZE
) )
from .mixins import DocumentTestMixin from .mixins import DocumentTestMixin
@@ -27,7 +27,6 @@ from .mixins import DocumentTestMixin
class DocumentTestCase(DocumentTestMixin, BaseTestCase): class DocumentTestCase(DocumentTestMixin, BaseTestCase):
def test_natural_keys(self): def test_natural_keys(self):
self.document.pages.first().generate_image() self.document.pages.first().generate_image()
self._test_database_conversion('documents') self._test_database_conversion('documents')
def test_document_creation(self): def test_document_creation(self):
@@ -47,10 +46,10 @@ class DocumentTestCase(DocumentTestMixin, BaseTestCase):
self.assertEqual(self.document.page_count, 1) self.assertEqual(self.document.page_count, 1)
def test_version_creation(self): def test_version_creation(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object) self.document.new_version(file_object=file_object)
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version( self.document.new_version(
file_object=file_object, comment='test comment 1' file_object=file_object, comment='test comment 1'
) )

View File

@@ -12,12 +12,12 @@ from documents.tests import DocumentTestMixin
class DocumentSearchTestCase(DocumentTestMixin, BaseTestCase): class DocumentSearchTestCase(DocumentTestMixin, BaseTestCase):
def _perform_document_page_search(self): def _perform_document_page_search(self):
return document_page_search.search( return document_page_search.search(
{'q': self.document.label}, user=self.user query_string={'q': self.document.label}, user=self.user
) )
def _perform_document_search(self): def _perform_document_search(self):
return document_search.search( return document_search.search(
{'q': self.document.label}, user=self.user query_string={'q': self.document.label}, user=self.user
) )
def test_document_page_search_no_access(self): def test_document_page_search_no_access(self):
@@ -25,7 +25,9 @@ class DocumentSearchTestCase(DocumentTestMixin, BaseTestCase):
self.assertFalse(self.document.pages.first() in queryset) self.assertFalse(self.document.pages.first() in queryset)
def test_document_page_search_with_access(self): def test_document_page_search_with_access(self):
self.grant_access(permission=permission_document_view, obj=self.document) self.grant_access(
permission=permission_document_view, obj=self.document
)
queryset, elapsed_time = self._perform_document_page_search() queryset, elapsed_time = self._perform_document_page_search()
self.assertTrue(self.document.pages.first() in queryset) self.assertTrue(self.document.pages.first() in queryset)
@@ -34,6 +36,8 @@ class DocumentSearchTestCase(DocumentTestMixin, BaseTestCase):
self.assertFalse(self.document in queryset) self.assertFalse(self.document in queryset)
def test_document_search_with_access(self): def test_document_search_with_access(self):
self.grant_access(permission=permission_document_view, obj=self.document) self.grant_access(
permission=permission_document_view, obj=self.document
)
queryset, elapsed_time = self._perform_document_search() queryset, elapsed_time = self._perform_document_search()
self.assertTrue(self.document in queryset) self.assertTrue(self.document in queryset)

View File

@@ -5,19 +5,18 @@ from django.urls import reverse
from rest_framework import status from rest_framework import status
from documents.models import DocumentType
from documents.search import document_search from documents.search import document_search
from documents.permissions import permission_document_view from documents.permissions import permission_document_view
from documents.tests import ( from documents.tests import DocumentTestMixin
TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH
)
from rest_api.tests import BaseAPITestCase from rest_api.tests import BaseAPITestCase
from ..classes import SearchModel from ..classes import SearchModel
@override_settings(OCR_AUTO_OCR=False) @override_settings(OCR_AUTO_OCR=False)
class SearchAPITestCase(BaseAPITestCase): class SearchAPITestCase(DocumentTestMixin, BaseAPITestCase):
auto_upload_document = False
def setUp(self): def setUp(self):
super(SearchAPITestCase, self).setUp() super(SearchAPITestCase, self).setUp()
self.login_user() self.login_user()
@@ -33,24 +32,14 @@ class SearchAPITestCase(BaseAPITestCase):
) )
) )
def _create_document(self):
self.document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document = self.document_type.new_document(
file_object=file_object,
)
def test_search_no_access(self): def test_search_no_access(self):
self._create_document() self.document = self.upload_document()
response = self._request_search_view() response = self._request_search_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['count'], 0) self.assertEqual(response.data['count'], 0)
def test_search_with_access(self): def test_search_with_access(self):
self._create_document() self.document = self.upload_document()
self.grant_access( self.grant_access(
permission=permission_document_view, obj=self.document permission=permission_document_view, obj=self.document
) )

View File

@@ -25,7 +25,7 @@ class Issue46TestCase(GenericViewTestCase):
# Upload many instances of the same test document # Upload many instances of the same test document
for i in range(self.document_count): for i in range(self.document_count):
with open(TEST_SMALL_DOCUMENT_PATH) as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document_type.new_document( self.document_type.new_document(
file_object=file_object, file_object=file_object,
label='test document', label='test document',

View File

@@ -60,7 +60,7 @@ class FileLockTestCase(TestCase):
# would be successfull, even after an extended lapse of time # would be successfull, even after an extended lapse of time
def test_release_expired_reaquired(self): def test_release_expired_reaquired(self):
lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_1, timeout=1) self.locking_backend.acquire_lock(name=TEST_LOCK_1, timeout=1)
time.sleep(1.01) time.sleep(1.01)
# TEST_LOCK_1 is expired so trying to acquire it should not return an # TEST_LOCK_1 is expired so trying to acquire it should not return an
# error. # error.

View File

@@ -13,6 +13,16 @@ from .models import DocumentPageOCRContent
class DocumentPageOCRContentForm(forms.Form): class DocumentPageOCRContentForm(forms.Form):
contents = forms.CharField(
label=_('Contents'),
widget=TextAreaDiv(
attrs={
'class': 'text_area_div full-height',
'data-height-difference': 360
}
)
)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
page = kwargs.pop('instance', None) page = kwargs.pop('instance', None)
super(DocumentPageOCRContentForm, self).__init__(*args, **kwargs) super(DocumentPageOCRContentForm, self).__init__(*args, **kwargs)
@@ -28,6 +38,12 @@ class DocumentPageOCRContentForm(forms.Form):
self.fields['contents'].initial = mark_safe(content) self.fields['contents'].initial = mark_safe(content)
class DocumentOCRContentForm(forms.Form):
"""
Form that concatenates all of a document pages' text content into a
single textarea widget
"""
contents = forms.CharField( contents = forms.CharField(
label=_('Contents'), label=_('Contents'),
widget=TextAreaDiv( widget=TextAreaDiv(
@@ -38,12 +54,6 @@ class DocumentPageOCRContentForm(forms.Form):
) )
) )
class DocumentOCRContentForm(forms.Form):
"""
Form that concatenates all of a document pages' text content into a
single textarea widget
"""
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.document = kwargs.pop('instance', None) self.document = kwargs.pop('instance', None)
super(DocumentOCRContentForm, self).__init__(*args, **kwargs) super(DocumentOCRContentForm, self).__init__(*args, **kwargs)
@@ -71,16 +81,6 @@ class DocumentOCRContentForm(forms.Form):
self.fields['contents'].initial = mark_safe(''.join(content)) self.fields['contents'].initial = mark_safe(''.join(content))
contents = forms.CharField(
label=_('Contents'),
widget=TextAreaDiv(
attrs={
'class': 'text_area_div full-height',
'data-height-difference': 360
}
)
)
class DocumentTypeSelectForm(forms.Form): class DocumentTypeSelectForm(forms.Form):
document_type = forms.ModelChoiceField( document_type = forms.ModelChoiceField(

View File

@@ -1,3 +1,4 @@
from __future__ import unicode_literals from __future__ import unicode_literals
TEST_OCR_INDEX_NODE_TEMPLATE = '{% if "mayan" in document.latest_version.ocr_content|join:" "|lower %}mayan{% endif %}' TEST_OCR_INDEX_NODE_TEMPLATE = '{% if "mayan" in document.latest_version.ocr_content|join:" "|lower %}mayan{% endif %}'
TEST_OCR_INDEX_NODE_TEMPLATE_LEVEL = 'mayan'

View File

@@ -11,6 +11,8 @@ from ..permissions import (
permission_ocr_document, permission_ocr_content_view, permission_ocr_document, permission_ocr_content_view,
) )
TEST_DOCUMENT_CONTENT = 'Mayan EDMS Documentation'
@override_settings(OCR_AUTO_OCR=False) @override_settings(OCR_AUTO_OCR=False)
@override_settings(DOCUMENT_PARSING_PDFTOTEXT_PATH='') @override_settings(DOCUMENT_PARSING_PDFTOTEXT_PATH='')
@@ -85,5 +87,5 @@ class OCRAPITestCase(DocumentTestMixin, BaseAPITestCase):
response = self._request_document_page_content_view() response = self._request_document_page_content_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertTrue( self.assertTrue(
'Mayan EDMS Documentation' in response.data['content'] TEST_DOCUMENT_CONTENT in response.data['content']
) )

View File

@@ -7,7 +7,9 @@ from documents.tests import DocumentTestMixin
from document_indexing.models import Index, IndexInstanceNode from document_indexing.models import Index, IndexInstanceNode
from document_indexing.tests.literals import TEST_INDEX_LABEL from document_indexing.tests.literals import TEST_INDEX_LABEL
from .literals import TEST_OCR_INDEX_NODE_TEMPLATE from .literals import (
TEST_OCR_INDEX_NODE_TEMPLATE, TEST_OCR_INDEX_NODE_TEMPLATE_LEVEL
)
@override_settings(OCR_AUTO_OCR=False) @override_settings(OCR_AUTO_OCR=False)
@@ -30,6 +32,6 @@ class OCRIndexingTestCase(DocumentTestMixin, BaseTestCase):
self.assertTrue( self.assertTrue(
self.document in IndexInstanceNode.objects.get( self.document in IndexInstanceNode.objects.get(
value='mayan' value=TEST_OCR_INDEX_NODE_TEMPLATE_LEVEL
).documents.all() ).documents.all()
) )

View File

@@ -9,6 +9,10 @@ from documents.tests import (
DocumentTestMixin, TEST_DEU_DOCUMENT_PATH, TEST_DOCUMENT_TYPE_LABEL DocumentTestMixin, TEST_DEU_DOCUMENT_PATH, TEST_DOCUMENT_TYPE_LABEL
) )
TEST_DOCUMENT_CONTENT = 'Mayan EDMS Documentation'
TEST_DOCUMENT_CONTENT_DEU_1 = 'Repository für elektronische Dokumente.'
TEST_DOCUMENT_CONTENT_DEU_2 = 'Es bietet einen'
class DocumentOCRTestCase(DocumentTestMixin, BaseTestCase): class DocumentOCRTestCase(DocumentTestMixin, BaseTestCase):
# PyOCR's leak descriptor in get_available_languages and image_to_string # PyOCR's leak descriptor in get_available_languages and image_to_string
@@ -17,7 +21,7 @@ class DocumentOCRTestCase(DocumentTestMixin, BaseTestCase):
def test_ocr_language_backends_end(self): def test_ocr_language_backends_end(self):
content = self.document.pages.first().ocr_content.content content = self.document.pages.first().ocr_content.content
self.assertTrue('Mayan EDMS Documentation' in content) self.assertTrue(TEST_DOCUMENT_CONTENT in content)
class GermanOCRSupportTestCase(BaseTestCase): class GermanOCRSupportTestCase(BaseTestCase):
@@ -40,7 +44,7 @@ class GermanOCRSupportTestCase(BaseTestCase):
self.assertEqual('deu', language_code) self.assertEqual('deu', language_code)
with open(TEST_DEU_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_DEU_DOCUMENT_PATH, mode='rb') as file_object:
self.document = self.document_type.new_document( self.document = self.document_type.new_document(
file_object=file_object, language=language_code file_object=file_object, language=language_code
) )
@@ -53,8 +57,8 @@ class GermanOCRSupportTestCase(BaseTestCase):
content = self.document.pages.first().ocr_content.content content = self.document.pages.first().ocr_content.content
self.assertTrue( self.assertTrue(
'Repository für elektronische Dokumente.' in content TEST_DOCUMENT_CONTENT_DEU_1 in content
) )
self.assertTrue( self.assertTrue(
'Es bietet einen' in content TEST_DOCUMENT_CONTENT_DEU_2 in content
) )

View File

@@ -8,6 +8,8 @@ from ..permissions import (
) )
from ..utils import get_document_ocr_content from ..utils import get_document_ocr_content
TEST_DOCUMENT_CONTENT = 'Mayan EDMS Documentation'
class OCRViewsTestCase(GenericDocumentViewTestCase): class OCRViewsTestCase(GenericDocumentViewTestCase):
# PyOCR's leak descriptor in get_available_languages and image_to_string # PyOCR's leak descriptor in get_available_languages and image_to_string
@@ -20,7 +22,7 @@ class OCRViewsTestCase(GenericDocumentViewTestCase):
def _request_document_content_view(self): def _request_document_content_view(self):
return self.get( return self.get(
'ocr:document_ocr_content', args=(self.document.pk,) viewname='ocr:document_ocr_content', args=(self.document.pk,)
) )
def test_document_content_view_no_permissions(self): def test_document_content_view_no_permissions(self):
@@ -38,12 +40,37 @@ class OCRViewsTestCase(GenericDocumentViewTestCase):
response = self._request_document_content_view() response = self._request_document_content_view()
self.assertContains( self.assertContains(
response, 'Mayan EDMS Documentation', status_code=200 response=response, text=TEST_DOCUMENT_CONTENT, status_code=200
)
def _request_document_page_content_view(self):
return self.get(
viewname='ocr:document_page_ocr_content', args=(
self.document.pages.first().pk,
)
)
def test_document_page_content_view_no_permissions(self):
self.document.submit_for_ocr()
response = self._request_document_page_content_view()
self.assertEqual(response.status_code, 403)
def test_document_page_content_view_with_access(self):
self.document.submit_for_ocr()
self.grant_access(
permission=permission_ocr_content_view, obj=self.document
)
response = self._request_document_page_content_view()
self.assertContains(
response=response, text=TEST_DOCUMENT_CONTENT, status_code=200
) )
def _request_document_submit_view(self): def _request_document_submit_view(self):
return self.post( return self.post(
'ocr:document_submit', args=(self.document.pk,) viewname='ocr:document_submit', args=(self.document.pk,)
) )
def test_document_submit_view_no_permission(self): def test_document_submit_view_no_permission(self):
@@ -58,14 +85,14 @@ class OCRViewsTestCase(GenericDocumentViewTestCase):
) )
self._request_document_submit_view() self._request_document_submit_view()
self.assertTrue( self.assertTrue(
'Mayan EDMS Documentation' in ''.join( TEST_DOCUMENT_CONTENT in ''.join(
self.document.latest_version.ocr_content() self.document.latest_version.ocr_content()
) )
) )
def _request_multiple_document_submit_view(self): def _request_multiple_document_submit_view(self):
return self.post( return self.post(
'ocr:document_submit_multiple', viewname='ocr:document_submit_multiple',
data={ data={
'id_list': self.document.pk, 'id_list': self.document.pk,
} }
@@ -83,14 +110,14 @@ class OCRViewsTestCase(GenericDocumentViewTestCase):
) )
self._request_multiple_document_submit_view() self._request_multiple_document_submit_view()
self.assertTrue( self.assertTrue(
'Mayan EDMS Documentation' in ''.join( TEST_DOCUMENT_CONTENT in ''.join(
self.document.latest_version.ocr_content() self.document.latest_version.ocr_content()
) )
) )
def _request_document_ocr_download_view(self): def _request_document_ocr_download_view(self):
return self.get( return self.get(
'ocr:document_ocr_download', args=(self.document.pk,) viewname='ocr:document_ocr_download', args=(self.document.pk,)
) )
def test_document_ocr_download_view_no_permission(self): def test_document_ocr_download_view_no_permission(self):
@@ -108,7 +135,7 @@ class OCRViewsTestCase(GenericDocumentViewTestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assert_download_response( self.assert_download_response(
response, content=( response=response, content=(
''.join(get_document_ocr_content(document=self.document)) ''.join(get_document_ocr_content(document=self.document))
), ),
) )

View File

@@ -7,34 +7,34 @@ from .api_views import (
APIDocumentVersionOCRView APIDocumentVersionOCRView
) )
from .views import ( from .views import (
DocumentOCRContent, DocumentOCRDownloadView, DocumentOCRErrorsListView, DocumentOCRContentView, DocumentOCRDownloadView,
DocumentPageOCRContent, DocumentSubmitView, DocumentTypeSettingsEditView, DocumentOCRErrorsListView, DocumentPageOCRContentView, DocumentSubmitView,
DocumentTypeSubmitView, EntryListView DocumentTypeSettingsEditView, DocumentTypeSubmitView, EntryListView
) )
urlpatterns = [ urlpatterns = [
url( url(
r'^document/page/(?P<pk>\d+)/content/$', r'^documents/pages/(?P<pk>\d+)/content/$',
DocumentPageOCRContent.as_view(), name='document_page_ocr_content' DocumentPageOCRContentView.as_view(), name='document_page_ocr_content'
), ),
url( url(
r'^document/(?P<pk>\d+)/content/$', DocumentOCRContent.as_view(), r'^documents/(?P<pk>\d+)/content/$', DocumentOCRContentView.as_view(),
name='document_ocr_content' name='document_ocr_content'
), ),
url( url(
r'^document/(?P<pk>\d+)/submit/$', DocumentSubmitView.as_view(), r'^documents/(?P<pk>\d+)/submit/$', DocumentSubmitView.as_view(),
name='document_submit' name='document_submit'
), ),
url( url(
r'^document/type/submit/$', DocumentTypeSubmitView.as_view(), r'^document_types/submit/$', DocumentTypeSubmitView.as_view(),
name='document_type_submit' name='document_type_submit'
), ),
url( url(
r'^document/multiple/submit/$', DocumentSubmitView.as_view(), r'^documents/multiple/submit/$', DocumentSubmitView.as_view(),
name='document_submit_multiple' name='document_submit_multiple'
), ),
url( url(
r'^document_type/(?P<pk>\d+)/ocr/settings/$', r'^document_types/(?P<pk>\d+)/ocr/settings/$',
DocumentTypeSettingsEditView.as_view(), DocumentTypeSettingsEditView.as_view(),
name='document_type_ocr_settings' name='document_type_ocr_settings'
), ),

View File

@@ -24,13 +24,13 @@ from .permissions import (
from .utils import get_document_ocr_content from .utils import get_document_ocr_content
class DocumentOCRContent(SingleObjectDetailView): class DocumentOCRContentView(SingleObjectDetailView):
form_class = DocumentOCRContentForm form_class = DocumentOCRContentForm
model = Document model = Document
object_permission = permission_ocr_content_view object_permission = permission_ocr_content_view
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
result = super(DocumentOCRContent, self).dispatch( result = super(DocumentOCRContentView, self).dispatch(
request, *args, **kwargs request, *args, **kwargs
) )
self.get_object().add_as_recent_document_for_user(user=request.user) self.get_object().add_as_recent_document_for_user(user=request.user)
@@ -45,13 +45,13 @@ class DocumentOCRContent(SingleObjectDetailView):
} }
class DocumentPageOCRContent(SingleObjectDetailView): class DocumentPageOCRContentView(SingleObjectDetailView):
form_class = DocumentPageOCRContentForm form_class = DocumentPageOCRContentForm
model = DocumentPage model = DocumentPage
object_permission = permission_ocr_content_view object_permission = permission_ocr_content_view
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
result = super(DocumentPageOCRContent, self).dispatch( result = super(DocumentPageOCRContentView, self).dispatch(
request, *args, **kwargs request, *args, **kwargs
) )
self.get_object().document.add_as_recent_document_for_user( self.get_object().document.add_as_recent_document_for_user(

View File

@@ -32,14 +32,18 @@ class PermissionsViewsTestCase(GenericViewTestCase):
response = self._request_create_role_view() response = self._request_create_role_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(Role.objects.count(), 1) self.assertEqual(Role.objects.count(), 1)
self.assertFalse(TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)) self.assertFalse(
TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)
)
def test_role_creation_view_with_permission(self): def test_role_creation_view_with_permission(self):
self.grant_permission(permission=permission_role_create) self.grant_permission(permission=permission_role_create)
response = self._request_create_role_view() response = self._request_create_role_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(Role.objects.count(), 2) self.assertEqual(Role.objects.count(), 2)
self.assertTrue(TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)) self.assertTrue(
TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)
)
def _request_role_delete_view(self): def _request_role_delete_view(self):
return self.post( return self.post(
@@ -54,7 +58,9 @@ class PermissionsViewsTestCase(GenericViewTestCase):
response = self._request_role_delete_view() response = self._request_role_delete_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(Role.objects.count(), 2) self.assertEqual(Role.objects.count(), 2)
self.assertTrue(TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)) self.assertTrue(
TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)
)
def test_role_delete_view_with_access(self): def test_role_delete_view_with_access(self):
self._create_role() self._create_role()
@@ -62,7 +68,9 @@ class PermissionsViewsTestCase(GenericViewTestCase):
response = self._request_role_delete_view() response = self._request_role_delete_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(Role.objects.count(), 1) self.assertEqual(Role.objects.count(), 1)
self.assertFalse(TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)) self.assertFalse(
TEST_ROLE_2_LABEL in Role.objects.values_list('label', flat=True)
)
def _request_role_edit_view(self): def _request_role_edit_view(self):
return self.post( return self.post(
@@ -99,13 +107,17 @@ class PermissionsViewsTestCase(GenericViewTestCase):
self._create_role() self._create_role()
response = self._request_role_list_view() response = self._request_role_list_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertNotContains(response, text=TEST_ROLE_2_LABEL, status_code=200) self.assertNotContains(
response=response, text=TEST_ROLE_2_LABEL, status_code=200
)
def test_role_list_view_with_access(self): def test_role_list_view_with_access(self):
self._create_role() self._create_role()
self.grant_access(permission=permission_role_view, obj=self.role_2) self.grant_access(permission=permission_role_view, obj=self.role_2)
response = self._request_role_list_view() response = self._request_role_list_view()
self.assertContains(response, text=TEST_ROLE_2_LABEL, status_code=200) self.assertContains(
response=response, text=TEST_ROLE_2_LABEL, status_code=200
)
def _request_role_permissions_view(self): def _request_role_permissions_view(self):
return self.get( return self.get(
@@ -119,13 +131,17 @@ class PermissionsViewsTestCase(GenericViewTestCase):
def test_role_permissions_view_with_permission_grant(self): def test_role_permissions_view_with_permission_grant(self):
self._create_role() self._create_role()
self.grant_access(permission=permission_permission_grant, obj=self.role_2) self.grant_access(
permission=permission_permission_grant, obj=self.role_2
)
response = self._request_role_permissions_view() response = self._request_role_permissions_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
def test_role_permissions_view_with_permission_revoke(self): def test_role_permissions_view_with_permission_revoke(self):
self._create_role() self._create_role()
self.grant_access(permission=permission_permission_revoke, obj=self.role_2) self.grant_access(
permission=permission_permission_revoke, obj=self.role_2
)
response = self._request_role_permissions_view() response = self._request_role_permissions_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)

View File

@@ -127,7 +127,7 @@ class Setting(object):
def save_last_known_good(cls): def save_last_known_good(cls):
# Don't write over the last good configuration if we are trying # Don't write over the last good configuration if we are trying
# to restore the last good configuration # to restore the last good configuration
if not 'revertsettings' in sys.argv: if 'revertsettings' not in sys.argv:
cls.save_configuration( cls.save_configuration(
path=settings.CONFIGURATION_LAST_GOOD_FILEPATH path=settings.CONFIGURATION_LAST_GOOD_FILEPATH
) )

View File

@@ -34,7 +34,7 @@ class SettingForm(forms.Form):
try: try:
yaml.safe_load(self.cleaned_data['value']) yaml.safe_load(self.cleaned_data['value'])
except yaml.YAMLError as exception: except yaml.YAMLError:
raise ValidationError( raise ValidationError(
_( _(
'"%s" not a valid entry.' '"%s" not a valid entry.'

View File

@@ -22,6 +22,8 @@ class SourcesLinksTestCase(GenericDocumentViewTestCase):
self.assertEqual(resolved_link, None) self.assertEqual(resolved_link, None)
def test_document_create_link_with_access(self): def test_document_create_link_with_access(self):
self.grant_access(permission=permission_document_create, obj=self.document_type) self.grant_access(
permission=permission_document_create, obj=self.document_type
)
resolved_link = self._get_document_create_link() resolved_link = self._get_document_create_link()
self.assertNotEqual(resolved_link, None) self.assertNotEqual(resolved_link, None)

View File

@@ -46,7 +46,7 @@ class CompressedUploadsTestCase(BaseTestCase):
label='test source', uncompress=SOURCE_UNCOMPRESS_CHOICE_Y label='test source', uncompress=SOURCE_UNCOMPRESS_CHOICE_Y
) )
with open(TEST_COMPRESSED_DOCUMENT_PATH) as file_object: with open(TEST_COMPRESSED_DOCUMENT_PATH, mode='rb') as file_object:
source.handle_upload( source.handle_upload(
document_type=self.document_type, document_type=self.document_type,
file_object=file_object, file_object=file_object,

View File

@@ -39,10 +39,11 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
self.document.delete() self.document.delete()
def _request_upload_wizard(self): def _request_upload_wizard_view(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
return self.post( return self.post(
'sources:upload_interactive', args=(self.source.pk,), data={ viewname='sources:upload_interactive', args=(self.source.pk,),
data={
'source-file': file_object, 'source-file': file_object,
'document_type_id': self.document_type.pk, 'document_type_id': self.document_type.pk,
}, follow=True }, follow=True
@@ -51,8 +52,7 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
def test_upload_wizard_without_permission(self): def test_upload_wizard_without_permission(self):
self.login_user() self.login_user()
response = self._request_upload_wizard() response = self._request_upload_wizard_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(Document.objects.count(), 0) self.assertEqual(Document.objects.count(), 0)
@@ -61,7 +61,7 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_document_create) self.grant_permission(permission=permission_document_create)
response = self._request_upload_wizard() response = self._request_upload_wizard_view()
self.assertTrue(b'queued' in response.content) self.assertTrue(b'queued' in response.content)
self.assertEqual(Document.objects.count(), 1) self.assertEqual(Document.objects.count(), 1)
@@ -82,9 +82,10 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
obj=self.document_type, permission=permission_document_create obj=self.document_type, permission=permission_document_create
) )
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
response = self.post( response = self.post(
'sources:upload_interactive', args=(self.source.pk,), data={ viewname='sources:upload_interactive', args=(self.source.pk,),
data={
'source-file': file_object, 'source-file': file_object,
'document_type_id': self.document_type.pk, 'document_type_id': self.document_type.pk,
}, follow=True }, follow=True
@@ -95,7 +96,7 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
def _request_upload_interactive_view(self): def _request_upload_interactive_view(self):
return self.get( return self.get(
'sources:upload_interactive', data={ viewname='sources:upload_interactive', data={
'document_type_id': self.document_type.pk, 'document_type_id': self.document_type.pk,
} }
) )
@@ -104,7 +105,6 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
self.login_user() self.login_user()
response = self._request_upload_interactive_view() response = self._request_upload_interactive_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_upload_interactive_view_with_access(self): def test_upload_interactive_view_with_access(self):
@@ -113,9 +113,8 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
permission=permission_document_create, obj=self.document_type permission=permission_document_create, obj=self.document_type
) )
response = self._request_upload_interactive_view() response = self._request_upload_interactive_view()
self.assertContains( self.assertContains(
response, text=self.source.label, status_code=200 response=response, text=self.source.label, status_code=200
) )
@@ -136,7 +135,8 @@ class DocumentUploadIssueTestCase(GenericViewTestCase):
# Create new webform source # Create new webform source
self.post( self.post(
'sources:setup_source_create', args=(SOURCE_CHOICE_WEB_FORM,), viewname='sources:setup_source_create',
args=(SOURCE_CHOICE_WEB_FORM,),
data={'label': 'test', 'uncompress': 'n', 'enabled': True} data={'label': 'test', 'uncompress': 'n', 'enabled': True}
) )
self.assertEqual(WebFormSource.objects.count(), 1) self.assertEqual(WebFormSource.objects.count(), 1)
@@ -144,8 +144,9 @@ class DocumentUploadIssueTestCase(GenericViewTestCase):
# Upload the test document # Upload the test document
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_descriptor: with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_descriptor:
self.post( self.post(
'sources:upload_interactive', data={ viewname='sources:upload_interactive', data={
'document-language': 'eng', 'source-file': file_descriptor, 'document-language': 'eng',
'source-file': file_descriptor,
'document_type_id': self.document_type.pk 'document_type_id': self.document_type.pk
} }
) )
@@ -163,7 +164,7 @@ class DocumentUploadIssueTestCase(GenericViewTestCase):
# Test for issue 25 during editing # Test for issue 25 during editing
self.post( self.post(
'documents:document_edit', args=(document.pk,), data={ viewname='documents:document_edit', args=(document.pk,), data={
'description': TEST_DOCUMENT_DESCRIPTION, 'description': TEST_DOCUMENT_DESCRIPTION,
'language': document.language, 'label': document.label 'language': document.language, 'label': document.label
} }
@@ -189,7 +190,7 @@ class NewDocumentVersionViewTestCase(GenericDocumentViewTestCase):
NewVersionBlock.objects.block(self.document) NewVersionBlock.objects.block(self.document)
response = self.post( response = self.post(
'sources:upload_version', args=(self.document.pk,), viewname='sources:upload_version', args=(self.document.pk,),
follow=True follow=True
) )
@@ -222,6 +223,13 @@ class StagingFolderViewTestCase(GenericViewTestCase):
fs_cleanup(self.temporary_directory) fs_cleanup(self.temporary_directory)
super(StagingFolderViewTestCase, self).tearDown() super(StagingFolderViewTestCase, self).tearDown()
def _request_staging_file_delete_view(self, staging_folder, staging_file):
return self.post(
viewname='sources:staging_file_delete', args=(
staging_folder.pk, staging_file.encoded_filename
)
)
def test_staging_folder_delete_no_permission(self): def test_staging_folder_delete_no_permission(self):
self.login_user() self.login_user()
@@ -236,12 +244,9 @@ class StagingFolderViewTestCase(GenericViewTestCase):
staging_file = list(staging_folder.get_files())[0] staging_file = list(staging_folder.get_files())[0]
response = self.post( response = self._request_staging_file_delete_view(
'sources:staging_file_delete', args=( staging_folder=staging_folder, staging_file=staging_file
staging_folder.pk, staging_file.encoded_filename
), follow=True
) )
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(len(list(staging_folder.get_files())), 1) self.assertEqual(len(list(staging_folder.get_files())), 1)
@@ -261,13 +266,10 @@ class StagingFolderViewTestCase(GenericViewTestCase):
staging_file = list(staging_folder.get_files())[0] staging_file = list(staging_folder.get_files())[0]
response = self.post( response = self._request_staging_file_delete_view(
'sources:staging_file_delete', args=( staging_folder=staging_folder, staging_file=staging_file
staging_folder.pk, staging_file.encoded_filename
), follow=True
) )
self.assertEqual(response.status_code, 302)
self.assertContains(response, 'deleted', status_code=200)
self.assertEqual(len(list(staging_folder.get_files())), 0) self.assertEqual(len(list(staging_folder.get_files())), 0)
@@ -278,6 +280,17 @@ class SourcesTestCase(GenericDocumentViewTestCase):
uncompress=TEST_SOURCE_UNCOMPRESS_N uncompress=TEST_SOURCE_UNCOMPRESS_N
) )
def _request_setup_source_list_view(self):
return self.get(viewname='sources:setup_source_list')
def test_source_list_view_no_permission(self):
self._create_web_source()
self.login_user()
response = self._request_setup_source_list_view()
self.assertEqual(response.status_code, 403)
def test_source_list_view_with_permission(self): def test_source_list_view_with_permission(self):
self._create_web_source() self._create_web_source()
@@ -285,56 +298,49 @@ class SourcesTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_sources_setup_view) self.grant_permission(permission=permission_sources_setup_view)
response = self.get(viewname='sources:setup_source_list') response = self._request_setup_source_list_view()
self.assertContains(
response=response, text=self.source.label, status_code=200
)
self.assertContains(response, text=self.source.label, status_code=200) def _request_setup_source_create_view(self):
return self.post(
def test_source_list_view_no_permission(self): args=(SOURCE_CHOICE_WEB_FORM,),
self._create_web_source() viewname='sources:setup_source_create', data={
'enabled': True, 'label': TEST_SOURCE_LABEL,
'uncompress': TEST_SOURCE_UNCOMPRESS_N
}
)
def test_source_create_view_no_permission(self):
self.login_user() self.login_user()
response = self.get(viewname='sources:setup_source_list') self.grant_permission(permission=permission_sources_setup_view)
response = self._request_setup_source_create_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(WebFormSource.objects.count(), 0)
def test_source_create_view_with_permission(self): def test_source_create_view_with_permission(self):
self.login_user() self.login_user()
self.grant_permission(permission=permission_sources_setup_create) self.grant_permission(permission=permission_sources_setup_create)
self.grant_permission(permission=permission_sources_setup_view) self.grant_permission(permission=permission_sources_setup_view)
response = self.post( response = self._request_setup_source_create_view()
args=(SOURCE_CHOICE_WEB_FORM,), follow=True, self.assertEquals(response.status_code, 302)
viewname='sources:setup_source_create', data={
'enabled': True, 'label': TEST_SOURCE_LABEL,
'uncompress': TEST_SOURCE_UNCOMPRESS_N
}
)
webform_source = WebFormSource.objects.first() webform_source = WebFormSource.objects.first()
self.assertEqual(webform_source.label, TEST_SOURCE_LABEL) self.assertEqual(webform_source.label, TEST_SOURCE_LABEL)
self.assertEqual(webform_source.uncompress, TEST_SOURCE_UNCOMPRESS_N) self.assertEqual(webform_source.uncompress, TEST_SOURCE_UNCOMPRESS_N)
self.assertEquals(response.status_code, 200) def _request_setup_source_delete_view(self):
return self.post(
def test_source_create_view_no_permission(self): args=(self.source.pk,),
self.login_user() viewname='sources:setup_source_delete'
self.grant_permission(permission=permission_sources_setup_view)
response = self.post(
args=(SOURCE_CHOICE_WEB_FORM,), follow=True,
viewname='sources:setup_source_create', data={
'enabled': True, 'label': TEST_SOURCE_LABEL,
'uncompress': TEST_SOURCE_UNCOMPRESS_N
}
) )
self.assertEqual(response.status_code, 403)
self.assertEqual(WebFormSource.objects.count(), 0)
def test_source_delete_view_with_permission(self): def test_source_delete_view_with_permission(self):
self._create_web_source() self._create_web_source()
@@ -343,12 +349,8 @@ class SourcesTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_sources_setup_delete) self.grant_permission(permission=permission_sources_setup_delete)
self.grant_permission(permission=permission_sources_setup_view) self.grant_permission(permission=permission_sources_setup_view)
response = self.post( response = self._request_setup_source_delete_view()
args=(self.source.pk,), follow=True, self.assertEqual(response.status_code, 302)
viewname='sources:setup_source_delete'
)
self.assertEqual(response.status_code, 200)
self.assertEqual(WebFormSource.objects.count(), 0) self.assertEqual(WebFormSource.objects.count(), 0)
def test_source_delete_view_no_permission(self): def test_source_delete_view_no_permission(self):
@@ -358,10 +360,6 @@ class SourcesTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_sources_setup_view) self.grant_permission(permission=permission_sources_setup_view)
response = self.post( response = self._request_setup_source_delete_view()
args=(self.source.pk,), follow=True,
viewname='sources:setup_source_delete'
)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(WebFormSource.objects.count(), 1) self.assertEqual(WebFormSource.objects.count(), 1)

View File

@@ -29,17 +29,12 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
super(TagAPITestCase, self).setUp() super(TagAPITestCase, self).setUp()
self.login_user() self.login_user()
def tearDown(self):
if hasattr(self, 'document_type'):
self.document_type.delete()
super(TagAPITestCase, self).tearDown()
def _create_tag(self): def _create_tag(self):
return Tag.objects.create( return Tag.objects.create(
color=TEST_TAG_COLOR, label=TEST_TAG_LABEL color=TEST_TAG_COLOR, label=TEST_TAG_LABEL
) )
def _request_tag_create(self): def _request_tag_create_view(self):
return self.post( return self.post(
viewname='rest_api:tag-list', data={ viewname='rest_api:tag-list', data={
'label': TEST_TAG_LABEL, 'color': TEST_TAG_COLOR 'label': TEST_TAG_LABEL, 'color': TEST_TAG_COLOR
@@ -47,13 +42,13 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
) )
def test_tag_create_view_no_permission(self): def test_tag_create_view_no_permission(self):
response = self._request_tag_create() response = self._request_tag_create_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(Tag.objects.count(), 0) self.assertEqual(Tag.objects.count(), 0)
def test_tag_create_view_with_permission(self): def test_tag_create_view_with_permission(self):
self.grant_permission(permission=permission_tag_create) self.grant_permission(permission=permission_tag_create)
response = self._request_tag_create() response = self._request_tag_create_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
tag = Tag.objects.first() tag = Tag.objects.first()
@@ -65,19 +60,21 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.assertEqual(tag.label, TEST_TAG_LABEL) self.assertEqual(tag.label, TEST_TAG_LABEL)
self.assertEqual(tag.color, TEST_TAG_COLOR) self.assertEqual(tag.color, TEST_TAG_COLOR)
def _request_tag_delete(self): def _request_tag_delete_view(self):
return self.delete(viewname='rest_api:tag-detail', args=(self.tag.pk,)) return self.delete(
viewname='rest_api:tag-detail', args=(self.tag.pk,)
)
def test_tag_delete_view_no_access(self): def test_tag_delete_view_no_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
response = self._request_tag_delete() response = self._request_tag_delete_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertTrue(self.tag in Tag.objects.all()) self.assertTrue(self.tag in Tag.objects.all())
def test_tag_delete_view_with_access(self): def test_tag_delete_view_with_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
self.grant_access(permission=permission_tag_delete, obj=self.tag) self.grant_access(permission=permission_tag_delete, obj=self.tag)
response = self._request_tag_delete() response = self._request_tag_delete_view()
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertFalse(self.tag in Tag.objects.all()) self.assertFalse(self.tag in Tag.objects.all())
@@ -127,7 +124,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
force_text(self.document.uuid) force_text(self.document.uuid)
) )
def _request_tag_edit_via_patch(self): def _request_tag_edit_via_patch_view(self):
return self.patch( return self.patch(
viewname='rest_api:tag-detail', args=(self.tag.pk,), data={ viewname='rest_api:tag-detail', args=(self.tag.pk,), data={
'label': TEST_TAG_LABEL_EDITED, 'label': TEST_TAG_LABEL_EDITED,
@@ -137,7 +134,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_tag_edit_via_patch_no_access(self): def test_tag_edit_via_patch_no_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
response = self._request_tag_edit_via_patch() response = self._request_tag_edit_via_patch_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.tag.refresh_from_db() self.tag.refresh_from_db()
self.assertEqual(self.tag.label, TEST_TAG_LABEL) self.assertEqual(self.tag.label, TEST_TAG_LABEL)
@@ -146,13 +143,13 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_tag_edit_via_patch_with_access(self): def test_tag_edit_via_patch_with_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
self.grant_access(permission=permission_tag_edit, obj=self.tag) self.grant_access(permission=permission_tag_edit, obj=self.tag)
response = self._request_tag_edit_via_patch() response = self._request_tag_edit_via_patch_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.tag.refresh_from_db() self.tag.refresh_from_db()
self.assertEqual(self.tag.label, TEST_TAG_LABEL_EDITED) self.assertEqual(self.tag.label, TEST_TAG_LABEL_EDITED)
self.assertEqual(self.tag.color, TEST_TAG_COLOR_EDITED) self.assertEqual(self.tag.color, TEST_TAG_COLOR_EDITED)
def _request_tag_edit_via_put(self): def _request_tag_edit_via_put_view(self):
return self.put( return self.put(
viewname='rest_api:tag-detail', args=(self.tag.pk,), data={ viewname='rest_api:tag-detail', args=(self.tag.pk,), data={
'label': TEST_TAG_LABEL_EDITED, 'label': TEST_TAG_LABEL_EDITED,
@@ -162,7 +159,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_tag_edit_via_put_no_access(self): def test_tag_edit_via_put_no_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
response = self._request_tag_edit_via_put() response = self._request_tag_edit_via_put_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.tag.refresh_from_db() self.tag.refresh_from_db()
self.assertEqual(self.tag.label, TEST_TAG_LABEL) self.assertEqual(self.tag.label, TEST_TAG_LABEL)
@@ -171,13 +168,13 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_tag_edit_via_put_with_access(self): def test_tag_edit_via_put_with_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
self.grant_access(permission=permission_tag_edit, obj=self.tag) self.grant_access(permission=permission_tag_edit, obj=self.tag)
response = self._request_tag_edit_via_put() response = self._request_tag_edit_via_put_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.tag.refresh_from_db() self.tag.refresh_from_db()
self.assertEqual(self.tag.label, TEST_TAG_LABEL_EDITED) self.assertEqual(self.tag.label, TEST_TAG_LABEL_EDITED)
self.assertEqual(self.tag.color, TEST_TAG_COLOR_EDITED) self.assertEqual(self.tag.color, TEST_TAG_COLOR_EDITED)
def _request_document_attach_tag(self): def _request_document_attach_tag_view(self):
return self.post( return self.post(
viewname='rest_api:document-tag-list', args=(self.document.pk,), viewname='rest_api:document-tag-list', args=(self.document.pk,),
data={'tag_pk': self.tag.pk} data={'tag_pk': self.tag.pk}
@@ -186,7 +183,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_document_attach_tag_view_no_access(self): def test_document_attach_tag_view_no_access(self):
self.tag = self._create_tag() self.tag = self._create_tag()
self.document = self.upload_document() self.document = self.upload_document()
response = self._request_document_attach_tag() response = self._request_document_attach_tag_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertFalse(self.tag in self.document.tags.all()) self.assertFalse(self.tag in self.document.tags.all())
@@ -194,7 +191,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.tag = self._create_tag() self.tag = self._create_tag()
self.document = self.upload_document() self.document = self.upload_document()
self.grant_access(permission=permission_tag_attach, obj=self.document) self.grant_access(permission=permission_tag_attach, obj=self.document)
response = self._request_document_attach_tag() response = self._request_document_attach_tag_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertFalse(self.tag in self.document.tags.all()) self.assertFalse(self.tag in self.document.tags.all())
@@ -202,7 +199,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.tag = self._create_tag() self.tag = self._create_tag()
self.document = self.upload_document() self.document = self.upload_document()
self.grant_access(permission=permission_tag_attach, obj=self.tag) self.grant_access(permission=permission_tag_attach, obj=self.tag)
response = self._request_document_attach_tag() response = self._request_document_attach_tag_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertTrue(self.tag in self.document.tags.all()) self.assertTrue(self.tag in self.document.tags.all())
@@ -211,7 +208,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.document = self.upload_document() self.document = self.upload_document()
self.grant_access(permission=permission_tag_attach, obj=self.document) self.grant_access(permission=permission_tag_attach, obj=self.document)
self.grant_access(permission=permission_tag_attach, obj=self.tag) self.grant_access(permission=permission_tag_attach, obj=self.tag)
response = self._request_document_attach_tag() response = self._request_document_attach_tag_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertTrue(self.tag in self.document.tags.all()) self.assertTrue(self.tag in self.document.tags.all())
@@ -294,7 +291,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['results'][0]['label'], self.tag.label) self.assertEqual(response.data['results'][0]['label'], self.tag.label)
def _request_document_tag_remove(self): def _request_document_tag_remove_view(self):
return self.delete( return self.delete(
viewname='rest_api:document-tag-detail', args=( viewname='rest_api:document-tag-detail', args=(
self.document.pk, self.tag.pk self.document.pk, self.tag.pk
@@ -305,7 +302,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.tag = self._create_tag() self.tag = self._create_tag()
self.document = self.upload_document() self.document = self.upload_document()
self.tag.documents.add(self.document) self.tag.documents.add(self.document)
response = self._request_document_tag_remove() response = self._request_document_tag_remove_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertTrue(self.tag in self.document.tags.all()) self.assertTrue(self.tag in self.document.tags.all())
@@ -314,7 +311,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.document = self.upload_document() self.document = self.upload_document()
self.tag.documents.add(self.document) self.tag.documents.add(self.document)
self.grant_access(permission=permission_tag_remove, obj=self.document) self.grant_access(permission=permission_tag_remove, obj=self.document)
response = self._request_document_tag_remove() response = self._request_document_tag_remove_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertTrue(self.tag in self.document.tags.all()) self.assertTrue(self.tag in self.document.tags.all())
@@ -323,7 +320,7 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.document = self.upload_document() self.document = self.upload_document()
self.tag.documents.add(self.document) self.tag.documents.add(self.document)
self.grant_access(permission=permission_tag_remove, obj=self.tag) self.grant_access(permission=permission_tag_remove, obj=self.tag)
response = self._request_document_tag_remove() response = self._request_document_tag_remove_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertTrue(self.tag in self.document.tags.all()) self.assertTrue(self.tag in self.document.tags.all())
@@ -333,6 +330,6 @@ class TagAPITestCase(DocumentTestMixin, BaseAPITestCase):
self.tag.documents.add(self.document) self.tag.documents.add(self.document)
self.grant_access(permission=permission_document_view, obj=self.document) self.grant_access(permission=permission_document_view, obj=self.document)
self.grant_access(permission=permission_tag_remove, obj=self.tag) self.grant_access(permission=permission_tag_remove, obj=self.tag)
response = self._request_document_tag_remove() response = self._request_document_tag_remove_view()
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertFalse(self.tag in self.document.tags.all()) self.assertFalse(self.tag in self.document.tags.all())

View File

@@ -14,19 +14,6 @@ from .literals import TEST_TAG_COLOR, TEST_TAG_LABEL
class TagTestCase(DocumentTestMixin, BaseTestCase): class TagTestCase(DocumentTestMixin, BaseTestCase):
auto_upload_document = False auto_upload_document = False
def setUp(self):
super(TagTestCase, self).setUp()
def tearDown(self):
self.document.delete()
self.document_type.delete()
super(TagTestCase, self).tearDown()
def runTest(self):
tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL)
self.assertEqual(tag.label, TEST_TAG_LABEL)
self.assertEqual(tag.get_color_code(), 'red')
def test_addition_and_deletion_of_documents(self): def test_addition_and_deletion_of_documents(self):
tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL) tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL)
self.document = self.upload_document() self.document = self.upload_document()

View File

@@ -21,48 +21,45 @@ class TagViewTestCase(GenericDocumentViewTestCase):
color=TEST_TAG_COLOR, label=TEST_TAG_LABEL color=TEST_TAG_COLOR, label=TEST_TAG_LABEL
) )
def _request_create_tag(self): def _request_create_tag_view(self):
return self.post( return self.post(
'tags:tag_create', data={ viewname='tags:tag_create', data={
'label': TEST_TAG_LABEL, 'label': TEST_TAG_LABEL,
'color': TEST_TAG_COLOR 'color': TEST_TAG_COLOR
}, follow=True }
) )
def test_tag_create_view_no_permissions(self): def test_tag_create_view_no_permissions(self):
self.login_user() self.login_user()
response = self._request_create_tag() response = self._request_create_tag_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(Tag.objects.count(), 0) self.assertEqual(Tag.objects.count(), 0)
def test_tag_create_view_with_permissions(self): def test_tag_create_view_with_permissions(self):
self.login_user() self.login_user()
self.grant_permission(permission=permission_tag_create) self.grant_permission(permission=permission_tag_create)
response = self._request_create_tag_view()
response = self._request_create_tag() self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
self.assertEqual(Tag.objects.count(), 1) self.assertEqual(Tag.objects.count(), 1)
tag = Tag.objects.first() tag = Tag.objects.first()
self.assertEqual(tag.label, TEST_TAG_LABEL) self.assertEqual(tag.label, TEST_TAG_LABEL)
self.assertEqual(tag.color, TEST_TAG_COLOR) self.assertEqual(tag.color, TEST_TAG_COLOR)
def _request_delete_tag(self): def _request_delete_tag_view(self):
return self.post( return self.post(
'tags:tag_delete', args=(self.tag.pk,), follow=True viewname='tags:tag_delete', args=(self.tag.pk,)
) )
def test_tag_delete_view_no_permissions(self): def test_tag_delete_view_no_permissions(self):
self.login_user() self.login_user()
self._create_tag() self._create_tag()
response = self._request_delete_tag() response = self._request_delete_tag_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
self.assertEqual(Tag.objects.count(), 1) self.assertEqual(Tag.objects.count(), 1)
def test_tag_delete_view_with_access(self): def test_tag_delete_view_with_access(self):
@@ -71,25 +68,23 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_delete) self.grant_access(obj=self.tag, permission=permission_tag_delete)
response = self._request_delete_tag() response = self._request_delete_tag_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
self.assertEqual(Tag.objects.count(), 0) self.assertEqual(Tag.objects.count(), 0)
def _request_multiple_delete(self): def _request_multiple_delete_view(self):
return self.post( return self.post(
'tags:tag_multiple_delete', data={'id_list': self.tag.pk}, viewname='tags:tag_multiple_delete',
follow=True data={'id_list': self.tag.pk},
) )
def test_tag_multiple_delete_view_no_permissions(self): def test_tag_multiple_delete_view_no_permissions(self):
self.login_user() self.login_user()
self._create_tag() self._create_tag()
response = self._request_multiple_delete() response = self._request_multiple_delete_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
self.assertEqual(Tag.objects.count(), 1) self.assertEqual(Tag.objects.count(), 1)
def test_tag_multiple_delete_view_with_access(self): def test_tag_multiple_delete_view_with_access(self):
@@ -98,25 +93,23 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_delete) self.grant_access(obj=self.tag, permission=permission_tag_delete)
response = self._request_multiple_delete() response = self._request_multiple_delete_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
self.assertEqual(Tag.objects.count(), 0) self.assertEqual(Tag.objects.count(), 0)
def _request_edit_tag(self): def _request_edit_tag_view(self):
return self.post( return self.post(
'tags:tag_edit', args=(self.tag.pk,), data={ viewname='tags:tag_edit', args=(self.tag.pk,), data={
'label': TEST_TAG_LABEL_EDITED, 'color': TEST_TAG_COLOR_EDITED 'label': TEST_TAG_LABEL_EDITED, 'color': TEST_TAG_COLOR_EDITED
}, follow=True }
) )
def test_tag_edit_view_no_permissions(self): def test_tag_edit_view_no_permissions(self):
self.login_user() self.login_user()
self._create_tag() self._create_tag()
response = self._request_edit_tag() response = self._request_edit_tag_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
tag = Tag.objects.get(pk=self.tag.pk) tag = Tag.objects.get(pk=self.tag.pk)
self.assertEqual(tag.label, TEST_TAG_LABEL) self.assertEqual(tag.label, TEST_TAG_LABEL)
@@ -128,23 +121,24 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_edit) self.grant_access(obj=self.tag, permission=permission_tag_edit)
response = self._request_edit_tag() response = self._request_edit_tag_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
tag = Tag.objects.get(pk=self.tag.pk) tag = Tag.objects.get(pk=self.tag.pk)
self.assertEqual(tag.label, TEST_TAG_LABEL_EDITED) self.assertEqual(tag.label, TEST_TAG_LABEL_EDITED)
self.assertEqual(tag.color, TEST_TAG_COLOR_EDITED) self.assertEqual(tag.color, TEST_TAG_COLOR_EDITED)
def _request_document_list(self): def _request_document_list_view(self):
return self.get('documents:document_list') return self.get(viewname='documents:document_list')
def test_document_tags_widget_no_permissions(self): def test_document_tags_widget_no_permissions(self):
self.login_user() self.login_user()
self._create_tag() self._create_tag()
self.tag.documents.add(self.document) self.tag.documents.add(self.document)
response = self._request_document_list() response = self._request_document_list_view()
self.assertNotContains(response, text=TEST_TAG_LABEL, status_code=200) self.assertNotContains(
response=response, text=TEST_TAG_LABEL, status_code=200
)
def test_document_tags_widget_with_access(self): def test_document_tags_widget_with_access(self):
self.login_user() self.login_user()
@@ -157,13 +151,14 @@ class TagViewTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_view obj=self.document, permission=permission_document_view
) )
response = self._request_document_list() response = self._request_document_list_view()
self.assertContains(
response=response, text=TEST_TAG_LABEL, status_code=200
)
self.assertContains(response, text=TEST_TAG_LABEL, status_code=200) def _request_attach_tag_view(self):
def _request_attach_tag(self):
return self.post( return self.post(
'tags:tag_attach', args=(self.document.pk,), data={ viewname='tags:tag_attach', args=(self.document.pk,), data={
'tags': self.tag.pk, 'tags': self.tag.pk,
'user': self.user.pk 'user': self.user.pk
} }
@@ -177,8 +172,7 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_attach) self.grant_access(obj=self.tag, permission=permission_tag_attach)
response = self._request_attach_tag() response = self._request_attach_tag_view()
# Redirect to previous URL and show warning message about having to # Redirect to previous URL and show warning message about having to
# select at least one object. # select at least one object.
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
@@ -196,17 +190,16 @@ class TagViewTestCase(GenericDocumentViewTestCase):
# choices # choices
self.grant_access(obj=self.tag, permission=permission_tag_view) self.grant_access(obj=self.tag, permission=permission_tag_view)
response = self._request_attach_tag() response = self._request_attach_tag_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual( self.assertQuerysetEqual(
self.document.tags.all(), (repr(self.tag),) self.document.tags.all(), (repr(self.tag),)
) )
def _request_multiple_attach_tag(self): def _request_multiple_attach_tag_view(self):
return self.post( return self.post(
'tags:multiple_documents_tag_attach', data={ viewname='tags:multiple_documents_tag_attach', data={
'id_list': self.document.pk, 'tags': self.tag.pk, 'id_list': self.document.pk, 'tags': self.tag.pk,
'user': self.user.pk 'user': self.user.pk
} }
@@ -218,8 +211,7 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_tag_view) self.grant_permission(permission=permission_tag_view)
response = self._request_multiple_attach_tag() response = self._request_multiple_attach_tag_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(self.document.tags.count(), 0) self.assertEqual(self.document.tags.count(), 0)
@@ -234,17 +226,16 @@ class TagViewTestCase(GenericDocumentViewTestCase):
# choices # choices
self.grant_access(obj=self.tag, permission=permission_tag_view) self.grant_access(obj=self.tag, permission=permission_tag_view)
response = self._request_multiple_attach_tag() response = self._request_multiple_attach_tag_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual( self.assertQuerysetEqual(
self.document.tags.all(), (repr(self.tag),) self.document.tags.all(), (repr(self.tag),)
) )
def _request_single_document_multiple_tag_remove(self): def _request_single_document_multiple_tag_remove_view(self):
return self.post( return self.post(
'tags:single_document_multiple_tag_remove', viewname='tags:single_document_multiple_tag_remove',
args=(self.document.pk,), data={ args=(self.document.pk,), data={
'id_list': self.document.pk, 'id_list': self.document.pk,
'tags': self.tag.pk, 'tags': self.tag.pk,
@@ -259,9 +250,9 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_view) self.grant_access(obj=self.tag, permission=permission_tag_view)
response = self._request_single_document_multiple_tag_remove() response = self._request_single_document_multiple_tag_remove_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertQuerysetEqual(self.document.tags.all(), (repr(self.tag),)) self.assertQuerysetEqual(self.document.tags.all(), (repr(self.tag),))
def test_single_document_multiple_tag_remove_view_with_access(self): def test_single_document_multiple_tag_remove_view_with_access(self):
@@ -274,14 +265,14 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_remove) self.grant_access(obj=self.tag, permission=permission_tag_remove)
self.grant_access(obj=self.tag, permission=permission_tag_view) self.grant_access(obj=self.tag, permission=permission_tag_view)
response = self._request_single_document_multiple_tag_remove() response = self._request_single_document_multiple_tag_remove_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.tags.count(), 0) self.assertEqual(self.document.tags.count(), 0)
def _request_multiple_documents_selection_tag_remove(self): def _request_multiple_documents_selection_tag_remove_view(self):
return self.post( return self.post(
'tags:multiple_documents_selection_tag_remove', viewname='tags:multiple_documents_selection_tag_remove',
data={ data={
'id_list': self.document.pk, 'id_list': self.document.pk,
'tags': self.tag.pk, 'tags': self.tag.pk,
@@ -296,9 +287,9 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_view) self.grant_access(obj=self.tag, permission=permission_tag_view)
response = self._request_multiple_documents_selection_tag_remove() response = self._request_multiple_documents_selection_tag_remove_view()
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertQuerysetEqual(self.document.tags.all(), (repr(self.tag),)) self.assertQuerysetEqual(self.document.tags.all(), (repr(self.tag),))
def test_multiple_documents_selection_tag_remove_view_with_access(self): def test_multiple_documents_selection_tag_remove_view_with_access(self):
@@ -311,7 +302,7 @@ class TagViewTestCase(GenericDocumentViewTestCase):
self.grant_access(obj=self.tag, permission=permission_tag_remove) self.grant_access(obj=self.tag, permission=permission_tag_remove)
self.grant_access(obj=self.tag, permission=permission_tag_view) self.grant_access(obj=self.tag, permission=permission_tag_view)
response = self._request_multiple_documents_selection_tag_remove() response = self._request_multiple_documents_selection_tag_remove_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.tags.count(), 0) self.assertEqual(self.document.tags.count(), 0)

View File

@@ -27,7 +27,7 @@ class TaggedDocumentUploadTestCase(GenericDocumentViewTestCase):
self.document.delete() self.document.delete()
def _request_upload_interactive_document_create_view(self): def _request_upload_interactive_document_create_view(self):
with open(TEST_SMALL_DOCUMENT_PATH, 'rb') as file_object: with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
return self.post( return self.post(
viewname='sources:upload_interactive', args=(self.source.pk,), viewname='sources:upload_interactive', args=(self.source.pk,),
data={ data={
@@ -48,6 +48,5 @@ class TaggedDocumentUploadTestCase(GenericDocumentViewTestCase):
permission=permission_document_create, obj=self.document_type permission=permission_document_create, obj=self.document_type
) )
response = self._request_upload_interactive_document_create_view() response = self._request_upload_interactive_document_create_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertTrue(self.tag in Document.objects.first().tags.all()) self.assertTrue(self.tag in Document.objects.first().tags.all())

View File

@@ -11,18 +11,13 @@ https://docs.djangoproject.com/en/1.10/ref/settings/
""" """
from __future__ import unicode_literals from __future__ import unicode_literals
import errno
import os import os
import sys import sys
import yaml
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import environ import environ
import mayan
from .literals import ( from .literals import (
CONFIGURATION_FILENAME, CONFIGURATION_LAST_GOOD_FILENAME, CONFIGURATION_FILENAME, CONFIGURATION_LAST_GOOD_FILENAME,
DEFAULT_SECRET_KEY, SECRET_KEY_FILENAME, SYSTEM_DIR DEFAULT_SECRET_KEY, SECRET_KEY_FILENAME, SYSTEM_DIR
@@ -359,7 +354,7 @@ CONFIGURATION_LAST_GOOD_FILEPATH = os.path.join(
MEDIA_ROOT, CONFIGURATION_LAST_GOOD_FILENAME MEDIA_ROOT, CONFIGURATION_LAST_GOOD_FILENAME
) )
if not 'revertsettings' in sys.argv: if 'revertsettings' not in sys.argv:
result = read_configuration_file(CONFIGURATION_FILEPATH) result = read_configuration_file(CONFIGURATION_FILEPATH)
if result: if result:
globals().update(result) globals().update(result)

View File

@@ -1,7 +1,5 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import os
DEFAULT_SECRET_KEY = 'secret-key-missing!' DEFAULT_SECRET_KEY = 'secret-key-missing!'
SECRET_KEY_FILENAME = 'SECRET_KEY' SECRET_KEY_FILENAME = 'SECRET_KEY'
SYSTEM_DIR = 'system' SYSTEM_DIR = 'system'

View File

@@ -14,4 +14,4 @@ DATABASES = {
BROKER_URL = 'redis://127.0.0.1:6379/0' BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
DEBUG=True DEBUG = True

View File

@@ -4,4 +4,3 @@ from .base import * # NOQA
DEBUG = False DEBUG = False
SIGNATURES_GPG_PATH = '/usr/bin/gpg1' SIGNATURES_GPG_PATH = '/usr/bin/gpg1'

View File

@@ -3,4 +3,3 @@ from __future__ import unicode_literals
from ..base import * # NOQA from ..base import * # NOQA
SIGNATURES_GPG_PATH = '/usr/bin/gpg1' SIGNATURES_GPG_PATH = '/usr/bin/gpg1'

View File

@@ -2,7 +2,6 @@ from __future__ import unicode_literals
import errno import errno
import os import os
import sys
import yaml import yaml