Instead of inserting the path of the apps into the Python app, the apps are now referenced by their full import path. This app name claves 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>
138 lines
4.3 KiB
Python
138 lines
4.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import time
|
|
|
|
from django.urls import reverse
|
|
|
|
from mayan.apps.acls.models import AccessControlList
|
|
|
|
from ..links import (
|
|
link_document_restore, link_document_version_download,
|
|
link_document_version_revert
|
|
)
|
|
from ..permissions import (
|
|
permission_document_download, permission_document_restore,
|
|
permission_document_version_revert
|
|
)
|
|
|
|
from .base import GenericDocumentViewTestCase
|
|
from .literals import TEST_SMALL_DOCUMENT_PATH
|
|
|
|
|
|
class DocumentsLinksTestCase(GenericDocumentViewTestCase):
|
|
def test_document_version_revert_link_no_permission(self):
|
|
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
|
|
self.document.new_version(file_object=file_object)
|
|
|
|
self.assertTrue(self.document.versions.count(), 2)
|
|
|
|
self.login_user()
|
|
|
|
self.add_test_view(test_object=self.document.versions.first())
|
|
context = self.get_test_view()
|
|
resolved_link = link_document_version_revert.resolve(context=context)
|
|
|
|
self.assertEqual(resolved_link, None)
|
|
|
|
def test_document_version_revert_link_with_permission(self):
|
|
# Needed by MySQL as milliseconds value is not store in timestamp
|
|
# field
|
|
time.sleep(1.01)
|
|
|
|
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
|
|
self.document.new_version(file_object=file_object)
|
|
|
|
self.assertTrue(self.document.versions.count(), 2)
|
|
|
|
self.login_user()
|
|
|
|
acl = AccessControlList.objects.create(
|
|
content_object=self.document, role=self.role
|
|
)
|
|
acl.permissions.add(
|
|
permission_document_version_revert.stored_permission
|
|
)
|
|
|
|
self.add_test_view(test_object=self.document.versions.first())
|
|
context = self.get_test_view()
|
|
resolved_link = link_document_version_revert.resolve(context=context)
|
|
|
|
self.assertNotEqual(resolved_link, None)
|
|
self.assertEqual(
|
|
resolved_link.url,
|
|
reverse(
|
|
'documents:document_version_revert',
|
|
args=(self.document.versions.first().pk,)
|
|
)
|
|
)
|
|
|
|
def test_document_version_download_link_no_permission(self):
|
|
self.login_user()
|
|
|
|
self.add_test_view(test_object=self.document.latest_version)
|
|
context = self.get_test_view()
|
|
resolved_link = link_document_version_download.resolve(context=context)
|
|
|
|
self.assertEqual(resolved_link, None)
|
|
|
|
def test_document_version_download_link_with_permission(self):
|
|
self.login_user()
|
|
|
|
acl = AccessControlList.objects.create(
|
|
content_object=self.document, role=self.role
|
|
)
|
|
acl.permissions.add(permission_document_download.stored_permission)
|
|
|
|
self.add_test_view(test_object=self.document.latest_version)
|
|
context = self.get_test_view()
|
|
resolved_link = link_document_version_download.resolve(context=context)
|
|
|
|
self.assertNotEqual(resolved_link, None)
|
|
self.assertEqual(
|
|
resolved_link.url,
|
|
reverse(
|
|
'documents:document_version_download_form',
|
|
args=(self.document.latest_version.pk,)
|
|
)
|
|
)
|
|
|
|
|
|
class DeletedDocumentsLinksTestCase(GenericDocumentViewTestCase):
|
|
def test_deleted_document_restore_link_no_permission(self):
|
|
self.document.delete()
|
|
|
|
self.login_user()
|
|
|
|
self.add_test_view(test_object=self.document)
|
|
context = self.get_test_view()
|
|
resolved_link = link_document_restore.resolve(context=context)
|
|
|
|
self.assertEqual(resolved_link, None)
|
|
|
|
def test_deleted_document_restore_link_with_permission(self):
|
|
self.document.delete()
|
|
|
|
self.login_user()
|
|
|
|
acl = AccessControlList.objects.create(
|
|
content_object=self.document, role=self.role
|
|
)
|
|
acl.permissions.add(
|
|
permission_document_restore.stored_permission
|
|
)
|
|
|
|
self.add_test_view(test_object=self.document)
|
|
context = self.get_test_view()
|
|
resolved_link = link_document_restore.resolve(context=context)
|
|
|
|
self.assertNotEqual(resolved_link, None)
|
|
self.assertEqual(
|
|
resolved_link.url,
|
|
reverse(
|
|
'documents:document_restore',
|
|
args=(self.document.pk,)
|
|
)
|
|
)
|