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:
Roberto Rosario
2019-01-02 02:44:50 -04:00
parent 2cbac826d4
commit 8e0a2bbdbc
4 changed files with 53 additions and 41 deletions

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

View File

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

View File

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

View File

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