84 lines
2.9 KiB
Python
84 lines
2.9 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
from mayan.apps.document_states.tests.test_workflow_actions import ActionTestCase
|
|
from mayan.apps.documents.permissions import permission_document_view
|
|
|
|
from ..workflow_actions import (
|
|
GrantAccessAction, GrantDocumentAccessAction, RevokeAccessAction,
|
|
RevokeDocumentAccessAction
|
|
)
|
|
|
|
|
|
class ACLActionTestCase(ActionTestCase):
|
|
def test_grant_access_action(self):
|
|
action = GrantAccessAction(
|
|
form_data={
|
|
'content_type': ContentType.objects.get_for_model(
|
|
model=self.test_document
|
|
).pk,
|
|
'object_id': self.test_document.pk,
|
|
'roles': [self._test_case_role.pk],
|
|
'permissions': [permission_document_view.pk],
|
|
}
|
|
)
|
|
action.execute(context={'entry_log': self.entry_log})
|
|
|
|
self.assertEqual(self.test_document.acls.count(), 1)
|
|
self.assertEqual(
|
|
list(self.test_document.acls.first().permissions.all()),
|
|
[permission_document_view.stored_permission]
|
|
)
|
|
self.assertEqual(self.test_document.acls.first().role, self._test_case_role)
|
|
|
|
def test_grant_document_access_action(self):
|
|
action = GrantDocumentAccessAction(
|
|
form_data={
|
|
'roles': [self._test_case_role.pk],
|
|
'permissions': [permission_document_view.pk],
|
|
}
|
|
)
|
|
action.execute(context={'document': self.test_document})
|
|
|
|
self.assertEqual(self.test_document.acls.count(), 1)
|
|
self.assertEqual(
|
|
list(self.test_document.acls.first().permissions.all()),
|
|
[permission_document_view.stored_permission]
|
|
)
|
|
self.assertEqual(self.test_document.acls.first().role, self._test_case_role)
|
|
|
|
def test_revoke_access_action(self):
|
|
self.grant_access(
|
|
obj=self.test_document, permission=permission_document_view
|
|
)
|
|
|
|
action = RevokeAccessAction(
|
|
form_data={
|
|
'content_type': ContentType.objects.get_for_model(
|
|
model=self.test_document
|
|
).pk,
|
|
'object_id': self.test_document.pk,
|
|
'roles': [self._test_case_role.pk],
|
|
'permissions': [permission_document_view.pk],
|
|
}
|
|
)
|
|
action.execute(context={'entry_log': self.entry_log})
|
|
|
|
self.assertEqual(self.test_document.acls.count(), 0)
|
|
|
|
def test_revoke_document_access_action(self):
|
|
self.grant_access(
|
|
obj=self.test_document, permission=permission_document_view
|
|
)
|
|
|
|
action = RevokeDocumentAccessAction(
|
|
form_data={
|
|
'roles': [self._test_case_role.pk],
|
|
'permissions': [permission_document_view.pk],
|
|
}
|
|
)
|
|
action.execute(context={'document': self.test_document})
|
|
|
|
self.assertEqual(self.test_document.acls.count(), 0)
|