Add tests for the permission app.
This commit is contained in:
@@ -3,7 +3,7 @@ python:
|
|||||||
- 2.7
|
- 2.7
|
||||||
env:
|
env:
|
||||||
global:
|
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:
|
matrix:
|
||||||
- DB=mysql
|
- DB=mysql
|
||||||
- DB=postgres
|
- DB=postgres
|
||||||
|
|||||||
@@ -44,10 +44,14 @@ class Permission(object):
|
|||||||
_stored_permissions_cache = {}
|
_stored_permissions_cache = {}
|
||||||
_permissions = {}
|
_permissions = {}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def invalidate_cache(cls):
|
||||||
|
cls._stored_permissions_cache = {}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_permissions(cls, requester, permissions):
|
def check_permissions(cls, requester, permissions):
|
||||||
for permission in permissions:
|
for permission in permissions:
|
||||||
if permission.requester_has_this(requester):
|
if permission.stored_permission.requester_has_this(requester):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
logger.debug('no permission')
|
logger.debug('no permission')
|
||||||
@@ -100,6 +104,3 @@ class Permission(object):
|
|||||||
stored_permission.volatile_permission = self
|
stored_permission.volatile_permission = self
|
||||||
self.__class__._stored_permissions_cache[self.uuid] = stored_permission
|
self.__class__._stored_permissions_cache[self.uuid] = stored_permission
|
||||||
return 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