From 8bf3822e5442266fc555f373a5e3672fd2c40d20 Mon Sep 17 00:00:00 2001 From: Michael Price Date: Mon, 19 Feb 2018 19:41:37 -0400 Subject: [PATCH] Update the user OCR API tests to test for fail and success scenarios based on access. The tests were also updated to comform with the new API test class interface. Signed-off-by: Michael Price --- mayan/apps/ocr/tests/test_api.py | 96 ++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 42 deletions(-) diff --git a/mayan/apps/ocr/tests/test_api.py b/mayan/apps/ocr/tests/test_api.py index fb73bef98d..a3cdf7c6cd 100644 --- a/mayan/apps/ocr/tests/test_api.py +++ b/mayan/apps/ocr/tests/test_api.py @@ -1,20 +1,20 @@ from __future__ import unicode_literals -import json - -from django.contrib.auth import get_user_model -from django.urls import reverse +from django.test import override_settings from rest_framework import status from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH from rest_api.tests import BaseAPITestCase -from user_management.tests import ( - TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME + +from ..permissions import ( + permission_ocr_document, permission_ocr_content_view, ) +@override_settings(OCR_AUTO_OCR=False) +@override_settings(DOCUMENT_PARSING_PDFTOTEXT_PATH='') class OCRAPITestCase(BaseAPITestCase): """ Test the OCR app API endpoints @@ -22,16 +22,7 @@ class OCRAPITestCase(BaseAPITestCase): def setUp(self): super(OCRAPITestCase, self).setUp() - - self.admin_user = get_user_model().objects.create_superuser( - username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, - password=TEST_ADMIN_PASSWORD - ) - - self.client.login( - username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD - ) - + self.login_user() self.document_type = DocumentType.objects.create( label=TEST_DOCUMENT_TYPE_LABEL ) @@ -45,44 +36,65 @@ class OCRAPITestCase(BaseAPITestCase): self.document_type.delete() super(OCRAPITestCase, self).tearDown() - def test_submit_document(self): - response = self.client.post( - reverse( - 'rest_api:document-ocr-submit-view', - args=(self.document.pk,) - ) + def _request_document_ocr_submit_view(self): + return self.post( + viewname='rest_api:document-ocr-submit-view', + args=(self.document.pk,) ) + def test_submit_document_no_access(self): + response = self._request_document_ocr_submit_view() + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + self.assertFalse(hasattr(self.document.pages.first(), 'ocr_content')) + + def test_submit_document_with_access(self): + self.grant_access( + permission=permission_ocr_document, obj=self.document + ) + response = self._request_document_ocr_submit_view() self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) - content = self.document.pages.first().ocr_content.content + self.assertTrue(hasattr(self.document.pages.first(), 'ocr_content')) - self.assertTrue('Mayan EDMS Documentation' in content) - - def test_submit_document_version(self): - response = self.client.post( - reverse( - 'rest_api:document-version-ocr-submit-view', - args=(self.document.latest_version.pk,) - ) + def _request_document_version_ocr_submit_view(self): + return self.post( + viewname='rest_api:document-version-ocr-submit-view', + args=(self.document.latest_version.pk,) ) + def test_submit_document_version_no_access(self): + response = self._request_document_version_ocr_submit_view() + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + self.assertFalse(hasattr(self.document.pages.first(), 'ocr_content')) + + def test_submit_document_version_with_access(self): + self.grant_access( + permission=permission_ocr_document, obj=self.document + ) + response = self._request_document_version_ocr_submit_view() self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) - content = self.document.pages.first().ocr_content.content + self.assertTrue(hasattr(self.document.pages.first(), 'ocr_content')) - self.assertTrue('Mayan EDMS Documentation' in content) - - def test_get_document_version_page_content(self): - response = self.client.get( - reverse( - 'rest_api:document-page-content-view', - args=(self.document.latest_version.pages.first().pk,) - ), + def _request_document_page_content_view(self): + return self.get( + viewname='rest_api:document-page-content-view', + args=(self.document.latest_version.pages.first().pk,) ) + def test_get_document_version_page_content_no_access(self): + response = self._request_document_page_content_view() + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_get_document_version_page_content_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.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertTrue( - 'Mayan EDMS Documentation' in json.loads(response.content)['content'] + 'Mayan EDMS Documentation' in response.data['content'] )