Files
mayan-edms/mayan/apps/documents/tests/test_events.py
Roberto Rosario 95a1df8072 Backport common mixin and generics improvements
* Rename get_object_list to get_source_queryset.
* Add uniqueness validation to SingleObjectCreateView.
* Remove MultipleInstanceActionMixin.
* Backport MultipleObjectMixin improvements.
* Remove ObjectListPermissionFilterMixin.
* Add and improve tests.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-06 02:07:35 -04:00

87 lines
2.9 KiB
Python

from __future__ import unicode_literals
from actstream.models import Action
from django_downloadview import assert_download_response
from ..events import event_document_download, event_document_view
from ..permissions import (
permission_document_download, permission_document_view
)
from .base import GenericDocumentViewTestCase
TEST_DOCUMENT_TYPE_EDITED_LABEL = 'test document type edited label'
TEST_DOCUMENT_TYPE_2_LABEL = 'test document type 2 label'
TEST_TRANSFORMATION_NAME = 'rotate'
TEST_TRANSFORMATION_ARGUMENT = 'degrees: 180'
class DocumentEventsTestCase(GenericDocumentViewTestCase):
def _request_test_document_download_view(self):
return self.get(
'documents:document_download', kwargs={'pk': self.test_document.pk}
)
def test_document_download_event_no_permissions(self):
Action.objects.all().delete()
response = self._request_test_document_download_view()
self.assertEqual(response.status_code, 403)
self.assertEqual(list(Action.objects.any(obj=self.test_document)), [])
def test_document_download_event_with_permissions(self):
self.expected_content_type = 'image/png; charset=utf-8'
Action.objects.all().delete()
self.grant_access(
obj=self.test_document, permission=permission_document_download
)
response = self._request_test_document_download_view()
# Download the file to close the file descriptor
with self.test_document.open() as file_object:
assert_download_response(
self, response, content=file_object.read(),
mime_type=self.test_document.file_mimetype
)
event = Action.objects.any(obj=self.test_document).first()
self.assertEqual(event.actor, self._test_case_user)
self.assertEqual(event.target, self.test_document)
self.assertEqual(event.verb, event_document_download.id)
def _request_test_document_preview_view(self):
return self.get(
viewname='documents:document_preview', kwargs={
'pk': self.test_document.pk
}
)
def test_document_view_event_no_permissions(self):
Action.objects.all().delete()
response = self._request_test_document_preview_view()
self.assertEqual(response.status_code, 404)
self.assertEqual(list(Action.objects.any(obj=self.test_document)), [])
def test_document_view_event_with_permissions(self):
Action.objects.all().delete()
self.grant_access(
obj=self.test_document, permission=permission_document_view
)
response = self._request_test_document_preview_view()
self.assertEqual(response.status_code, 200)
event = Action.objects.any(obj=self.test_document).first()
self.assertEqual(event.actor, self._test_case_user)
self.assertEqual(event.target, self.test_document)
self.assertEqual(event.verb, event_document_view.id)