Add tests for the permission app.
This commit is contained in:
@@ -3,7 +3,7 @@ python:
|
||||
- 2.7
|
||||
env:
|
||||
global:
|
||||
- TEST_APPS="authentication document_indexing documents django_gpg dynamic_search lock_manager document_signatures folders ocr sources tags"
|
||||
- TEST_APPS="authentication django_gpg document_indexing document_signatures documents dynamic_search folders lock_manager ocr permissions sources tags"
|
||||
matrix:
|
||||
- DB=mysql
|
||||
- DB=postgres
|
||||
|
||||
@@ -44,10 +44,14 @@ class Permission(object):
|
||||
_stored_permissions_cache = {}
|
||||
_permissions = {}
|
||||
|
||||
@classmethod
|
||||
def invalidate_cache(cls):
|
||||
cls._stored_permissions_cache = {}
|
||||
|
||||
@classmethod
|
||||
def check_permissions(cls, requester, permissions):
|
||||
for permission in permissions:
|
||||
if permission.requester_has_this(requester):
|
||||
if permission.stored_permission.requester_has_this(requester):
|
||||
return True
|
||||
|
||||
logger.debug('no permission')
|
||||
@@ -100,6 +104,3 @@ class Permission(object):
|
||||
stored_permission.volatile_permission = self
|
||||
self.__class__._stored_permissions_cache[self.uuid] = stored_permission
|
||||
return stored_permission
|
||||
|
||||
def requester_has_this(self, requester):
|
||||
return self.stored_permission.requester_has_this(requester)
|
||||
|
||||
36
mayan/apps/permissions/test_models.py
Normal file
36
mayan/apps/permissions/test_models.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.files import File
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test.client import Client
|
||||
from django.test import TestCase
|
||||
|
||||
from .classes import Permission
|
||||
from .models import Role, StoredPermission
|
||||
from .permissions import permission_role_view
|
||||
|
||||
|
||||
class PermissionTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.user = get_user_model().objects.create(username='test user')
|
||||
self.group = Group.objects.create(name='test group')
|
||||
self.role = Role.objects.create(label='test role')
|
||||
Permission.invalidate_cache()
|
||||
|
||||
def test_no_permissions(self):
|
||||
with self.assertRaises(PermissionDenied):
|
||||
Permission.check_permissions(requester=self.user, permissions=(permission_role_view,))
|
||||
|
||||
def test_with_permissions(self):
|
||||
self.group.user_set.add(self.user)
|
||||
self.role.permissions.add(permission_role_view.stored_permission)
|
||||
self.role.groups.add(self.group)
|
||||
|
||||
try:
|
||||
Permission.check_permissions(requester=self.user, permissions=(permission_role_view,))
|
||||
except PermissionDenied:
|
||||
self.fail('PermissionDenied exception was not expected.')
|
||||
Reference in New Issue
Block a user