Move the base test ACL mixin to the ACLs app
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
48
mayan/apps/acls/tests/mixins.py
Normal file
48
mayan/apps/acls/tests/mixins.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
|
|
||||||
|
from mayan.apps.permissions.models import Role
|
||||||
|
from mayan.apps.permissions.tests.literals import TEST_ROLE_LABEL
|
||||||
|
from mayan.apps.user_management.tests import (
|
||||||
|
TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME,
|
||||||
|
TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_PASSWORD,
|
||||||
|
TEST_USER_USERNAME
|
||||||
|
)
|
||||||
|
|
||||||
|
from ..models import AccessControlList
|
||||||
|
|
||||||
|
|
||||||
|
class ACLBaseTestMixin(object):
|
||||||
|
auto_create_group = True
|
||||||
|
auto_create_users = True
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(ACLBaseTestMixin, self).setUp()
|
||||||
|
if self.auto_create_users:
|
||||||
|
self.admin_user = get_user_model().objects.create_superuser(
|
||||||
|
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
|
||||||
|
password=TEST_ADMIN_PASSWORD
|
||||||
|
)
|
||||||
|
|
||||||
|
self.user = get_user_model().objects.create_user(
|
||||||
|
username=TEST_USER_USERNAME, email=TEST_USER_EMAIL,
|
||||||
|
password=TEST_USER_PASSWORD
|
||||||
|
)
|
||||||
|
|
||||||
|
if self.auto_create_group:
|
||||||
|
self.group = Group.objects.create(name=TEST_GROUP_NAME)
|
||||||
|
self.role = Role.objects.create(label=TEST_ROLE_LABEL)
|
||||||
|
self.group.user_set.add(self.user)
|
||||||
|
self.role.groups.add(self.group)
|
||||||
|
|
||||||
|
def grant_access(self, obj, permission):
|
||||||
|
return AccessControlList.objects.grant(
|
||||||
|
obj=obj, permission=permission, role=self.role
|
||||||
|
)
|
||||||
|
|
||||||
|
def grant_permission(self, permission):
|
||||||
|
self.role.permissions.add(
|
||||||
|
permission.stored_permission
|
||||||
|
)
|
||||||
@@ -9,6 +9,7 @@ from django.test.utils import ContextList
|
|||||||
from django.urls import clear_url_caches, reverse
|
from django.urls import clear_url_caches, reverse
|
||||||
from django_downloadview import assert_download_response
|
from django_downloadview import assert_download_response
|
||||||
|
|
||||||
|
from mayan.apps.acls.tests.mixins import ACLBaseTestMixin
|
||||||
from mayan.apps.permissions.classes import Permission
|
from mayan.apps.permissions.classes import Permission
|
||||||
from mayan.apps.smart_settings.classes import Namespace
|
from mayan.apps.smart_settings.classes import Namespace
|
||||||
from mayan.apps.user_management.tests import (
|
from mayan.apps.user_management.tests import (
|
||||||
@@ -19,11 +20,11 @@ from mayan.apps.user_management.tests import (
|
|||||||
from .literals import TEST_VIEW_NAME, TEST_VIEW_URL
|
from .literals import TEST_VIEW_NAME, TEST_VIEW_URL
|
||||||
from .mixins import (
|
from .mixins import (
|
||||||
ContentTypeCheckMixin, DatabaseConversionMixin, OpenFileCheckMixin,
|
ContentTypeCheckMixin, DatabaseConversionMixin, OpenFileCheckMixin,
|
||||||
TempfileCheckMixin, UserMixin
|
TempfileCheckMixin
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class BaseTestCase(DatabaseConversionMixin, UserMixin, ContentTypeCheckMixin, OpenFileCheckMixin, TempfileCheckMixin, TestCase):
|
class BaseTestCase(DatabaseConversionMixin, ACLBaseTestMixin, ContentTypeCheckMixin, OpenFileCheckMixin, TempfileCheckMixin, TestCase):
|
||||||
"""
|
"""
|
||||||
This is the most basic test case class any test in the project should use.
|
This is the most basic test case class any test in the project should use.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -8,9 +8,6 @@ from django.contrib.auth import get_user_model
|
|||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.core import management
|
from django.core import management
|
||||||
|
|
||||||
from mayan.apps.acls.models import AccessControlList
|
|
||||||
from mayan.apps.permissions.models import Role
|
|
||||||
from mayan.apps.permissions.tests.literals import TEST_ROLE_LABEL
|
|
||||||
from mayan.apps.user_management.tests import (
|
from mayan.apps.user_management.tests import (
|
||||||
TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME,
|
TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME,
|
||||||
TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_PASSWORD,
|
TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_PASSWORD,
|
||||||
@@ -127,37 +124,3 @@ class TempfileCheckMixin(object):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
super(TempfileCheckMixin, self).tearDown()
|
super(TempfileCheckMixin, self).tearDown()
|
||||||
|
|
||||||
|
|
||||||
class UserMixin(object):
|
|
||||||
auto_create_group = True
|
|
||||||
auto_create_users = True
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(UserMixin, self).setUp()
|
|
||||||
if self.auto_create_users:
|
|
||||||
self.admin_user = get_user_model().objects.create_superuser(
|
|
||||||
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
|
|
||||||
password=TEST_ADMIN_PASSWORD
|
|
||||||
)
|
|
||||||
|
|
||||||
self.user = get_user_model().objects.create_user(
|
|
||||||
username=TEST_USER_USERNAME, email=TEST_USER_EMAIL,
|
|
||||||
password=TEST_USER_PASSWORD
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.auto_create_group:
|
|
||||||
self.group = Group.objects.create(name=TEST_GROUP_NAME)
|
|
||||||
self.role = Role.objects.create(label=TEST_ROLE_LABEL)
|
|
||||||
self.group.user_set.add(self.user)
|
|
||||||
self.role.groups.add(self.group)
|
|
||||||
|
|
||||||
def grant_access(self, obj, permission):
|
|
||||||
AccessControlList.objects.grant(
|
|
||||||
obj=obj, permission=permission, role=self.role
|
|
||||||
)
|
|
||||||
|
|
||||||
def grant_permission(self, permission):
|
|
||||||
self.role.permissions.add(
|
|
||||||
permission.stored_permission
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from mayan.apps.common.tests.mixins import UserMixin
|
from mayan.apps.acls.tests.mixins import ACLBaseTestMixin
|
||||||
from mayan.apps.permissions.classes import Permission
|
from mayan.apps.permissions.classes import Permission
|
||||||
from mayan.apps.smart_settings.classes import Namespace
|
from mayan.apps.smart_settings.classes import Namespace
|
||||||
from mayan.apps.user_management.tests import (
|
from mayan.apps.user_management.tests import (
|
||||||
@@ -14,7 +14,7 @@ from mayan.apps.user_management.tests import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class BaseAPITestCase(UserMixin, APITestCase):
|
class BaseAPITestCase(ACLBaseTestMixin, APITestCase):
|
||||||
"""
|
"""
|
||||||
API test case class that invalidates permissions and smart settings
|
API test case class that invalidates permissions and smart settings
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user