219 lines
7.3 KiB
Python
219 lines
7.3 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.utils.encoding import force_text
|
|
|
|
from mayan.apps.common.tests.base import GenericViewTestCase
|
|
from mayan.apps.documents.tests.base import GenericDocumentViewTestCase
|
|
|
|
from ..models import WebLink
|
|
from ..permissions import (
|
|
permission_web_link_create, permission_web_link_delete,
|
|
permission_web_link_edit, permission_web_link_view,
|
|
permission_web_link_instance_view
|
|
)
|
|
|
|
from .literals import TEST_WEB_LINK_TEMPLATE
|
|
from .mixins import WebLinkTestMixin, WebLinkViewTestMixin
|
|
|
|
|
|
class WebLinkViewTestCase(
|
|
WebLinkTestMixin, WebLinkViewTestMixin, GenericViewTestCase
|
|
):
|
|
def test_web_link_create_view_no_permissions(self):
|
|
web_link_count = WebLink.objects.count()
|
|
|
|
response = self._request_test_web_link_create_view()
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
self.assertEqual(WebLink.objects.count(), web_link_count)
|
|
|
|
def test_web_link_create_view_with_permissions(self):
|
|
self.grant_permission(permission=permission_web_link_create)
|
|
|
|
web_link_count = WebLink.objects.count()
|
|
|
|
response = self._request_test_web_link_create_view()
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
self.assertEqual(WebLink.objects.count(), web_link_count + 1)
|
|
|
|
def test_web_link_delete_view_no_permissions(self):
|
|
self._create_test_web_link()
|
|
|
|
web_link_count = WebLink.objects.count()
|
|
|
|
response = self._request_test_web_link_delete_view()
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
self.assertEqual(WebLink.objects.count(), web_link_count)
|
|
|
|
def test_web_link_delete_view_with_access(self):
|
|
self._create_test_web_link()
|
|
|
|
self.grant_access(
|
|
obj=self.test_web_link, permission=permission_web_link_delete
|
|
)
|
|
|
|
web_link_count = WebLink.objects.count()
|
|
|
|
response = self._request_test_web_link_delete_view()
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
self.assertEqual(WebLink.objects.count(), web_link_count - 1)
|
|
|
|
def test_web_link_edit_view_no_permissions(self):
|
|
self._create_test_web_link()
|
|
|
|
web_link_label = self.test_web_link.label
|
|
|
|
response = self._request_test_web_link_edit_view()
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
self.test_web_link.refresh_from_db()
|
|
self.assertEqual(self.test_web_link.label, web_link_label)
|
|
|
|
def test_web_link_edit_view_with_access(self):
|
|
self._create_test_web_link()
|
|
|
|
self.grant_access(
|
|
obj=self.test_web_link, permission=permission_web_link_edit
|
|
)
|
|
|
|
web_link_label = self.test_web_link.label
|
|
|
|
response = self._request_test_web_link_edit_view()
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
self.test_web_link.refresh_from_db()
|
|
self.assertNotEqual(self.test_web_link.label, web_link_label)
|
|
|
|
def test_web_link_list_view_with_no_permission(self):
|
|
self._create_test_web_link()
|
|
|
|
response = self._request_test_web_link_list_view()
|
|
self.assertNotContains(
|
|
response=response, text=self.test_web_link.label, status_code=200
|
|
)
|
|
|
|
def test_web_link_list_view_with_access(self):
|
|
self._create_test_web_link()
|
|
|
|
self.grant_access(obj=self.test_web_link, permission=permission_web_link_view)
|
|
|
|
response = self._request_test_web_link_list_view()
|
|
self.assertContains(
|
|
response=response, text=self.test_web_link.label, status_code=200
|
|
)
|
|
|
|
|
|
class DocumentWebLinkViewTestCase(
|
|
WebLinkTestMixin, WebLinkViewTestMixin, GenericDocumentViewTestCase
|
|
):
|
|
def setUp(self):
|
|
super(DocumentWebLinkViewTestCase, self).setUp()
|
|
self._create_test_web_link()
|
|
self.test_web_link.document_types.add(self.test_document_type)
|
|
|
|
def test_document_web_links_list_view_no_permissions(self):
|
|
response = self._request_test_document_web_link_list_view()
|
|
self.assertNotContains(
|
|
response=response, text=force_text(self.test_document),
|
|
status_code=404
|
|
)
|
|
self.assertNotContains(
|
|
response=response, text=force_text(self.test_web_link),
|
|
status_code=404
|
|
)
|
|
|
|
def test_document_web_links_list_view_with_document_access(self):
|
|
self.grant_access(
|
|
obj=self.test_document,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
|
|
response = self._request_test_document_web_link_list_view()
|
|
self.assertContains(
|
|
response=response, text=force_text(self.test_document),
|
|
status_code=200
|
|
)
|
|
self.assertNotContains(
|
|
response=response, text=force_text(self.test_web_link),
|
|
status_code=200
|
|
)
|
|
|
|
def test_document_web_links_list_view_with_web_link_access(self):
|
|
self.grant_access(
|
|
obj=self.test_web_link,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
|
|
response = self._request_test_document_web_link_list_view()
|
|
self.assertNotContains(
|
|
response=response, text=force_text(self.test_document),
|
|
status_code=404
|
|
)
|
|
self.assertNotContains(
|
|
response=response, text=force_text(self.test_web_link),
|
|
status_code=404
|
|
)
|
|
|
|
def test_document_web_links_list_view_with_full_access(self):
|
|
self.grant_access(
|
|
obj=self.test_document,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
self.grant_access(
|
|
obj=self.test_web_link,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
|
|
response = self._request_test_document_web_link_list_view()
|
|
self.assertContains(
|
|
response=response, text=force_text(self.test_document),
|
|
status_code=200
|
|
)
|
|
self.assertContains(
|
|
response=response, text=force_text(self.test_web_link),
|
|
status_code=200
|
|
)
|
|
|
|
def test_document_resolved_web_link_view_no_permissions(self):
|
|
response = self._request_test_document_web_link_instance_view()
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
def test_document_resolved_web_link_view_with_document_access(self):
|
|
self.grant_access(
|
|
obj=self.test_document,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
|
|
response = self._request_test_document_web_link_instance_view()
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
def test_document_resolved_web_link_view_with_web_link_access(self):
|
|
self.grant_access(
|
|
obj=self.test_web_link,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
|
|
response = self._request_test_document_web_link_instance_view()
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
def test_document_resolved_web_link_view_with_full_access(self):
|
|
self.grant_access(
|
|
obj=self.test_document,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
self.grant_access(
|
|
obj=self.test_web_link,
|
|
permission=permission_web_link_instance_view
|
|
)
|
|
|
|
response = self._request_test_document_web_link_instance_view()
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(
|
|
response.url, TEST_WEB_LINK_TEMPLATE.replace(
|
|
'{{ document.uuid }}', force_text(self.test_document.uuid)
|
|
)
|
|
)
|