143 lines
5.5 KiB
Python
143 lines
5.5 KiB
Python
from django.test import TestCase, Client
|
|
|
|
from issue.models import *
|
|
|
|
|
|
class TestPermissions(TestCase):
|
|
|
|
fixtures = ['test_perms']
|
|
|
|
def test_team_user_membership(self):
|
|
user = User.objects.get(username='user1')
|
|
team = Team.objects.get(name='team1')
|
|
self.assertEqual(len(user.teams), 1)
|
|
self.assertEqual(user.teams[0], team)
|
|
|
|
def test_team_group_membership(self):
|
|
user = User.objects.get(username='user2')
|
|
team = Team.objects.get(name='team2')
|
|
self.assertEqual(len(user.teams), 1)
|
|
self.assertEqual(user.teams[0], team)
|
|
|
|
def test_global_no_perms(self):
|
|
user = User.objects.get(username='user4')
|
|
self.assertFalse(user.has_perm('create_project'))
|
|
self.assertFalse(user.has_perm('modify_project'))
|
|
self.assertFalse(user.has_perm('delete_project'))
|
|
|
|
def test_global_user_perms(self):
|
|
user = User.objects.get(username='user3')
|
|
self.assertTrue(user.has_perm('create_project'))
|
|
self.assertFalse(user.has_perm('modify_project'))
|
|
self.assertFalse(user.has_perm('delete_project'))
|
|
|
|
def test_global_group_perms(self):
|
|
user = User.objects.get(username='user2')
|
|
self.assertFalse(user.has_perm('create_project'))
|
|
self.assertTrue(user.has_perm('modify_project'))
|
|
self.assertFalse(user.has_perm('delete_project'))
|
|
|
|
def test_global_team_perms(self):
|
|
user = User.objects.get(username='user1')
|
|
self.assertFalse(user.has_perm('create_project'))
|
|
self.assertFalse(user.has_perm('modify_project'))
|
|
self.assertTrue(user.has_perm('delete_project'))
|
|
|
|
def test_project_no_perms(self):
|
|
user = User.objects.get(username='user4')
|
|
project = Project.objects.get(name='project-1')
|
|
self.assertFalse(user.has_perm('create_issue', project))
|
|
self.assertFalse(user.has_perm('modify_issue', project))
|
|
self.assertFalse(user.has_perm('delete_issue', project))
|
|
|
|
def test_project_user_perms(self):
|
|
user = User.objects.get(username='user3')
|
|
project = Project.objects.get(name='project-1')
|
|
self.assertTrue(user.has_perm('create_issue', project))
|
|
self.assertFalse(user.has_perm('modify_issue', project))
|
|
self.assertFalse(user.has_perm('delete_issue', project))
|
|
|
|
def test_project_group_perms(self):
|
|
user = User.objects.get(username='user2')
|
|
project = Project.objects.get(name='project-1')
|
|
self.assertFalse(user.has_perm('create_issue', project))
|
|
self.assertTrue(user.has_perm('modify_issue', project))
|
|
self.assertFalse(user.has_perm('delete_issue', project))
|
|
|
|
def test_project_team_perms(self):
|
|
user = User.objects.get(username='user1')
|
|
project = Project.objects.get(name='project-1')
|
|
self.assertFalse(user.has_perm('create_issue', project))
|
|
self.assertFalse(user.has_perm('modify_issue', project))
|
|
self.assertTrue(user.has_perm('delete_issue', project))
|
|
|
|
def test_unregistered_project_list(self):
|
|
response = self.client.get('/')
|
|
projects = response.context['projects']
|
|
project = Project.objects.get(name='project-1')
|
|
self.assertEqual(len(projects), 1)
|
|
self.assertEqual(projects[0], project)
|
|
|
|
def test_ungranted_project_list(self):
|
|
self.client.login(username='user1', password='user1')
|
|
response = self.client.get('/')
|
|
projects = response.context['projects']
|
|
project = Project.objects.get(name='project-1')
|
|
self.assertEqual(len(projects), 1)
|
|
self.assertEqual(projects[0], project)
|
|
self.client.logout()
|
|
|
|
def test_granted_project_list(self):
|
|
self.client.login(username='user2', password='user2')
|
|
response = self.client.get('/')
|
|
projects = response.context['projects']
|
|
project1 = Project.objects.get(name='project-1')
|
|
project2 = Project.objects.get(name='project-2')
|
|
self.assertEqual(len(projects), 2)
|
|
self.assertTrue(project1 in projects)
|
|
self.assertTrue(project2 in projects)
|
|
|
|
|
|
class TestViews(TestCase):
|
|
|
|
fixtures = ['test_perms']
|
|
|
|
def setUp(self):
|
|
self.client.login(username='admin', password='admin')
|
|
|
|
def test_404(self):
|
|
response = self.client.get('/deliberately/broken')
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
def test_home(self):
|
|
url = reverse('list-project')
|
|
self.assertEqual(url, '/')
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(len(response.context['projects']), 2)
|
|
|
|
def test_home_redirection(self):
|
|
Project.objects.all().delete()
|
|
expected_url = reverse('add-project')
|
|
url = reverse('list-project')
|
|
response = self.client.get(url)
|
|
self.assertRedirects(response, expected_url)
|
|
|
|
def test_add_project(self):
|
|
expected_url = reverse('list-project-permission', args=['test'])
|
|
url = reverse('add-project')
|
|
response = self.client.post(url, {
|
|
'name': 'test',
|
|
'display_name': 'Test',
|
|
'description': 'Testing purpose only.',
|
|
})
|
|
self.assertRedirects(response, expected_url)
|
|
self.assertEqual(Project.objects.count(), 3)
|
|
|
|
def test_delete_project(self):
|
|
expected_url = reverse('list-project')
|
|
url = reverse('delete-project', args=['project-1'])
|
|
response = self.client.get(url)
|
|
self.assertRedirects(response, expected_url)
|
|
self.assertEqual(Project.objects.count(), 1)
|
|
self.assertEqual(Project.objects.first().name, 'project-2')
|