Instead of inserting the path of the apps into the Python app, the apps are now referenced by their full import path. This solves name clashes with external or native Python libraries. Example: Mayan statistics app vs. Python new statistics library. Every app reference is now prepended with 'mayan.apps'. Existing config.yml files need to be updated manually. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
104 lines
3.2 KiB
Python
104 lines
3.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
from actstream.models import Action
|
|
from django_downloadview import assert_download_response
|
|
|
|
from mayan.apps.user_management.tests.literals import (
|
|
TEST_USER_PASSWORD, TEST_USER_USERNAME
|
|
)
|
|
|
|
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 test_document_download_event_no_permissions(self):
|
|
self.login(
|
|
username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
|
|
)
|
|
|
|
Action.objects.all().delete()
|
|
|
|
response = self.get(
|
|
'documents:document_download', args=(self.document.pk,)
|
|
)
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
self.assertEqual(list(Action.objects.any(obj=self.document)), [])
|
|
|
|
def test_document_download_event_with_permissions(self):
|
|
self.login(
|
|
username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
|
|
)
|
|
|
|
Action.objects.all().delete()
|
|
|
|
self.role.permissions.add(
|
|
permission_document_download.stored_permission
|
|
)
|
|
|
|
self.expected_content_type = 'image/png; charset=utf-8'
|
|
|
|
response = self.get(
|
|
viewname='documents:document_download', args=(self.document.pk,),
|
|
)
|
|
|
|
# Download the file to close the file descriptor
|
|
with self.document.open() as file_object:
|
|
assert_download_response(
|
|
self, response, content=file_object.read(),
|
|
mime_type=self.document.file_mimetype
|
|
)
|
|
|
|
event = Action.objects.any(obj=self.document).first()
|
|
|
|
self.assertEqual(event.verb, event_document_download.id)
|
|
self.assertEqual(event.target, self.document)
|
|
self.assertEqual(event.actor, self.user)
|
|
|
|
def test_document_view_event_no_permissions(self):
|
|
self.login(
|
|
username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
|
|
)
|
|
|
|
Action.objects.all().delete()
|
|
|
|
response = self.get(
|
|
viewname='documents:document_preview', args=(self.document.pk,)
|
|
)
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
self.assertEqual(list(Action.objects.any(obj=self.document)), [])
|
|
|
|
def test_document_view_event_with_permissions(self):
|
|
self.login(
|
|
username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
|
|
)
|
|
|
|
Action.objects.all().delete()
|
|
|
|
self.role.permissions.add(
|
|
permission_document_view.stored_permission
|
|
)
|
|
self.get(
|
|
viewname='documents:document_preview', args=(self.document.pk,),
|
|
)
|
|
|
|
event = Action.objects.any(obj=self.document).first()
|
|
|
|
self.assertEqual(event.verb, event_document_view.id)
|
|
self.assertEqual(event.target, self.document)
|
|
self.assertEqual(event.actor, self.user)
|