Add tests for the permission app.

This commit is contained in:
Roberto Rosario
2015-07-10 00:38:32 -04:00
parent 036a55065c
commit 01438f933c
3 changed files with 42 additions and 5 deletions

View File

@@ -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

View File

@@ -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)

View 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.')