diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index ef0fc48588..35cc5bfcc8 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -197,6 +197,9 @@ class DocumentsApp(MayanAppConfig): ModelPermission.register_inheritance( model=DocumentPage, related='document', ) + ModelPermission.register_inheritance( + model=DocumentPageResult, related='document_version__document', + ) ModelPermission.register_inheritance( model=DocumentTypeFilename, related='document_type', ) diff --git a/mayan/apps/documents/tests/test_search.py b/mayan/apps/documents/tests/test_search.py new file mode 100644 index 0000000000..0a9a2c4edd --- /dev/null +++ b/mayan/apps/documents/tests/test_search.py @@ -0,0 +1,55 @@ +from __future__ import unicode_literals + +from django.test import override_settings + +from common.tests import BaseTestCase +from documents.models import DocumentType +from documents.permissions import permission_document_view +from documents.search import document_search, document_page_search +from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH + + +@override_settings(OCR_AUTO_OCR=False) +class DocumentSearchTestCase(BaseTestCase): + def setUp(self): + super(DocumentSearchTestCase, self).setUp() + 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, label='mayan_11_1.pdf' + ) + + def tearDown(self): + self.document_type.delete() + super(DocumentSearchTestCase, self).tearDown() + + def _perform_document_page_search(self): + return document_page_search.search( + {'q': self.document.label}, user=self.user + ) + + def _perform_document_search(self): + return document_search.search( + {'q': self.document.label}, user=self.user + ) + + def test_document_page_search_no_access(self): + model_list, result_set, elapsed_time = self._perform_document_page_search() + self.assertFalse(self.document.pages.first() in model_list) + + def test_document_page_search_with_access(self): + self.grant_access(permission=permission_document_view, obj=self.document) + model_list, result_set, elapsed_time = self._perform_document_page_search() + self.assertTrue(self.document.pages.first() in model_list) + + def test_document_search_no_access(self): + model_list, result_set, elapsed_time = self._perform_document_search() + self.assertFalse(self.document in model_list) + + def test_document_search_with_access(self): + self.grant_access(permission=permission_document_view, obj=self.document) + model_list, result_set, elapsed_time = self._perform_document_search() + self.assertTrue(self.document in model_list)