diff --git a/mayan/apps/acls/tests/mixins.py b/mayan/apps/acls/tests/mixins.py new file mode 100644 index 0000000000..cc386c42e5 --- /dev/null +++ b/mayan/apps/acls/tests/mixins.py @@ -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 + ) diff --git a/mayan/apps/common/tests/base.py b/mayan/apps/common/tests/base.py index c7da71e826..f87649500b 100644 --- a/mayan/apps/common/tests/base.py +++ b/mayan/apps/common/tests/base.py @@ -9,6 +9,7 @@ from django.test.utils import ContextList from django.urls import clear_url_caches, reverse 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.smart_settings.classes import Namespace 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 .mixins import ( 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. """ diff --git a/mayan/apps/common/tests/mixins.py b/mayan/apps/common/tests/mixins.py index c0246f56bb..f44bd7f4e9 100644 --- a/mayan/apps/common/tests/mixins.py +++ b/mayan/apps/common/tests/mixins.py @@ -8,9 +8,6 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import Group 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 ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_PASSWORD, @@ -127,37 +124,3 @@ class TempfileCheckMixin(object): ) ) 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 - ) diff --git a/mayan/apps/rest_api/tests/base.py b/mayan/apps/rest_api/tests/base.py index de5696e17c..f088f2c8c9 100644 --- a/mayan/apps/rest_api/tests/base.py +++ b/mayan/apps/rest_api/tests/base.py @@ -5,7 +5,7 @@ from django.urls import reverse 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.smart_settings.classes import Namespace 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 """