64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.models import Group
|
|
from django.core.urlresolvers import reverse
|
|
from django.test.client import Client
|
|
from django.test import TestCase
|
|
|
|
from permissions.classes import Permission
|
|
from permissions.models import Role
|
|
from permissions.tests import TEST_ROLE
|
|
|
|
from ..permissions import permission_settings_view
|
|
|
|
TEST_EMAIL = 'test_user@example.com'
|
|
TEST_GROUP = 'test group'
|
|
TEST_PASSWORD = 'testuserpassword'
|
|
TEST_USERNAME = 'test_user'
|
|
|
|
|
|
class SmartSettingViewPermissionsTestCase(TestCase):
|
|
def setUp(self):
|
|
self.user = get_user_model().objects.create_user(
|
|
username=TEST_USERNAME, email=TEST_EMAIL,
|
|
password=TEST_PASSWORD
|
|
)
|
|
self.group = Group.objects.create(name=TEST_GROUP)
|
|
self.role = Role.objects.create(label=TEST_ROLE)
|
|
|
|
self.group.user_set.add(self.user)
|
|
self.role.groups.add(self.group)
|
|
|
|
Permission.invalidate_cache()
|
|
|
|
self.client = Client()
|
|
self.client.login(
|
|
username=TEST_USERNAME, password=TEST_PASSWORD
|
|
)
|
|
|
|
def tearDown(self):
|
|
self.group.delete()
|
|
self.role.delete()
|
|
self.user.delete()
|
|
|
|
def test_view_access_denied(self):
|
|
response = self.client.get(reverse('settings:namespace_list'))
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
response = self.client.get(
|
|
reverse('settings:namespace_detail', args=('common',),)
|
|
)
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_view_access_permitted(self):
|
|
self.role.permissions.add(permission_settings_view.stored_permission)
|
|
|
|
response = self.client.get(reverse('settings:namespace_list'))
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
response = self.client.get(
|
|
reverse('settings:namespace_detail', args=('common',),)
|
|
)
|
|
self.assertEqual(response.status_code, 200)
|