permissions tests

This commit is contained in:
Élie Bouttier 2014-09-02 21:37:45 -07:00
parent aef23ff7ae
commit c878c59bce
5 changed files with 845 additions and 2 deletions

View file

@ -0,0 +1,99 @@
[
{
"fields": {
"name": "group",
"permissions": []
},
"model": "auth.group",
"pk": 1
},
{
"fields": {
"date_joined": "2014-09-02T16:07:38.747Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": true,
"is_superuser": true,
"last_login": "2014-09-02T16:08:05.839Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$z8uHznukGN2w$HDJtFsQFDuYyONnx5Ejwj1XWtCQToFNvNRlwIfnNEcw=",
"user_permissions": [],
"username": "admin"
},
"model": "accounts.user",
"pk": 1
},
{
"fields": {
"date_joined": "2014-09-02T16:09:27.744Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": "2014-09-02T16:09:27.744Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$ZyViBuyRbbPA$PlsNahF3uCKR95IQurfxf7EwAK3cnK5kn2ysV6+8TaE=",
"user_permissions": [],
"username": "user"
},
"model": "accounts.user",
"pk": 2
},
{
"fields": {
"date_joined": "2014-09-02T16:48:07.271Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": "2014-09-02T16:48:07.271Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$MEGMcVXtzJAc$8aunLFrw+FHAJl+CAH+e/aCvpeQkrZUd7CAlIJkKSsE=",
"user_permissions": [],
"username": "guess"
},
"model": "accounts.user",
"pk": 3
},
{
"fields": {
"groups": [],
"name": "team",
"users": []
},
"model": "accounts.team",
"pk": 1
},
{
"fields": {
"access": 3,
"description": "",
"display_name": "Project 1",
"name": "project-1",
"subscribers": [
1
]
},
"model": "tracker.project",
"pk": 1
},
{
"fields": {
"access": 3,
"description": "",
"display_name": "Project 2",
"name": "project-2",
"subscribers": [
1
]
},
"model": "tracker.project",
"pk": 2
}
]

View file

@ -0,0 +1,143 @@
[
{
"fields": {
"name": "group",
"permissions": []
},
"model": "auth.group",
"pk": 1
},
{
"fields": {
"date_joined": "2014-09-02T16:07:38.747Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": true,
"is_superuser": true,
"last_login": "2014-09-02T16:08:05.839Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$z8uHznukGN2w$HDJtFsQFDuYyONnx5Ejwj1XWtCQToFNvNRlwIfnNEcw=",
"user_permissions": [],
"username": "admin"
},
"model": "accounts.user",
"pk": 1
},
{
"fields": {
"date_joined": "2014-09-02T16:09:27.744Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": "2014-09-02T16:09:27.744Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$ZyViBuyRbbPA$PlsNahF3uCKR95IQurfxf7EwAK3cnK5kn2ysV6+8TaE=",
"user_permissions": [],
"username": "user"
},
"model": "accounts.user",
"pk": 2
},
{
"fields": {
"date_joined": "2014-09-02T16:48:07.271Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": "2014-09-02T16:48:07.271Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$MEGMcVXtzJAc$8aunLFrw+FHAJl+CAH+e/aCvpeQkrZUd7CAlIJkKSsE=",
"user_permissions": [],
"username": "guess"
},
"model": "accounts.user",
"pk": 3
},
{
"fields": {
"groups": [],
"name": "team",
"users": []
},
"model": "accounts.team",
"pk": 1
},
{
"fields": {
"access": 3,
"description": "",
"display_name": "Project 1",
"name": "project-1",
"subscribers": [
1
]
},
"model": "tracker.project",
"pk": 1
},
{
"fields": {
"access": 3,
"description": "",
"display_name": "Project 2",
"name": "project-2",
"subscribers": [
1
]
},
"model": "tracker.project",
"pk": 2
},
{
"fields": {
"access_project": false,
"create_comment": false,
"create_issue": false,
"create_project": true,
"delete_comment": false,
"delete_issue": false,
"delete_project": false,
"delete_tags": false,
"grantee_id": 2,
"grantee_type": 0,
"manage_accounts": false,
"manage_global_permission": false,
"manage_issue": false,
"manage_project_permission": false,
"manage_settings": false,
"manage_tags": false,
"modify_comment": false,
"modify_issue": false,
"modify_project": false
},
"model": "permissions.globalpermission",
"pk": 1
},
{
"fields": {
"create_comment": false,
"create_issue": false,
"delete_comment": false,
"delete_issue": false,
"delete_tags": false,
"grantee_id": 2,
"grantee_type": 0,
"manage_issue": false,
"manage_project_permission": true,
"manage_tags": false,
"modify_comment": false,
"modify_issue": false,
"project": 1
},
"model": "permissions.projectpermission",
"pk": 1
}
]

View file

@ -1,3 +1,604 @@
from django.test import TestCase
from django.core.urlresolvers import reverse
# Create your tests here.
from permissions.models import *
from permissions.models import PermissionModel as PermModel
from accounts.models import *
from tracker.models import *
class TestViews(TestCase):
fixtures = ['test_permissions_views']
def setUp(self):
self.client.login(username='admin', password='admin')
def test_global_perm_list(self):
response = self.client.get(reverse('list-global-permission'))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Create project")
self.assertContains(response, "Access all project")
def test_global_perm_add(self):
count = GlobalPermission.objects.count()
response = self.client.get(reverse('add-global-permission'))
self.assertEqual(response.status_code, 200)
# user
response = self.client.post(reverse('add-global-permission'), {
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
user = User.objects.create(username='newuser')
response = self.client.post(reverse('add-global-permission'), {
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': user.username,
})
self.assertRedirects(response, reverse('list-global-permission'))
self.assertEqual(GlobalPermission.objects.count(), count + 1)
# group
response = self.client.post(reverse('add-global-permission'), {
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': 'newgroup',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
group = Group.objects.create(name='newgroup')
response = self.client.post(reverse('add-global-permission'), {
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': group.name,
})
self.assertRedirects(response, reverse('list-global-permission'))
self.assertEqual(GlobalPermission.objects.count(), count + 2)
# team
response = self.client.post(reverse('add-global-permission'), {
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': 'newteam',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
team = Team.objects.create(name='newteam')
response = self.client.post(reverse('add-global-permission'), {
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': team.name,
})
self.assertRedirects(response, reverse('list-global-permission'))
self.assertEqual(GlobalPermission.objects.count(), count + 3)
def test_global_perm_edit(self):
perm = GlobalPermission.objects.first()
response = self.client.get(reverse('edit-global-permission', args=[perm.id]))
self.assertEqual(response.status_code, 200)
# user
response = self.client.post(reverse('edit-global-permission', args=[perm.id]), {
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
user = User.objects.create(username='newuser')
response = self.client.post(reverse('edit-global-permission', args=[perm.id]), {
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': user.username,
})
self.assertRedirects(response, reverse('list-global-permission'))
perm = GlobalPermission.objects.get(pk=perm.pk)
self.assertEquals(user, perm.grantee)
# group
response = self.client.post(reverse('edit-global-permission', args=[perm.id]), {
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': 'newgroup',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
group = Group.objects.create(name='newgroup')
response = self.client.post(reverse('edit-global-permission', args=[perm.id]), {
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': group.name,
})
self.assertRedirects(response, reverse('list-global-permission'))
perm = GlobalPermission.objects.get(pk=perm.pk)
self.assertEquals(group, perm.grantee)
# team
response = self.client.post(reverse('edit-global-permission', args=[perm.id]), {
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': 'newteam',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
team = Team.objects.create(name='newteam')
response = self.client.post(reverse('edit-global-permission', args=[perm.id]), {
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': team.name,
})
self.assertRedirects(response, reverse('list-global-permission'))
perm = GlobalPermission.objects.get(pk=perm.pk)
self.assertEquals(team, perm.grantee)
def test_global_perm_delete(self):
perm = GlobalPermission.objects.first()
count = GlobalPermission.objects.count()
response = self.client.get(reverse('delete-global-permission', args=[perm.id]))
self.assertEqual(response.status_code, 405)
response = self.client.post(reverse('delete-global-permission', args=[perm.id]))
self.assertRedirects(response, reverse('list-global-permission'))
self.assertEqual(GlobalPermission.objects.count(), count - 1)
def test_global_perm_toggle(self):
perm = GlobalPermission.objects.first()
perm.create_project = True
perm.save()
response = self.client.get(reverse('toggle-global-permission', args=[perm.id, 'create_project']))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content.decode('utf-8'), '0')
perm = GlobalPermission.objects.get(pk=perm.pk)
self.assertEqual(perm.create_project, False)
response = self.client.get(reverse('toggle-global-permission', args=[perm.id, 'create_project']))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content.decode('utf-8'), '1')
perm = GlobalPermission.objects.get(pk=perm.pk)
self.assertEqual(perm.create_project, True)
def test_project_perm_list(self):
project = Project.objects.first()
response = self.client.get(reverse('list-project-permission', args=[project.name]))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Create issue")
def test_project_perm_add(self):
project = Project.objects.get(name='project-1')
wrongproject = Project.objects.get(name='project-2')
count = project.permissions.count()
response = self.client.get(reverse('add-project-permission', args=[project.name]))
self.assertEqual(response.status_code, 200)
# user
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
user = User.objects.create(username='newuser')
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': user.username,
})
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
project = Project.objects.get(pk=project.pk)
self.assertEqual(project.permissions.count(), count + 1)
# group
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': 'newgroup',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
group = Group.objects.create(name='newgroup')
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': group.name,
})
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
project = Project.objects.get(pk=project.pk)
self.assertEqual(project.permissions.count(), count + 2)
# team
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': 'newteam',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
team = Team.objects.create(name='newteam')
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': team.name,
})
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
project = Project.objects.get(pk=project.pk)
self.assertEqual(project.permissions.count(), count + 3)
# wrong project
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': wrongproject.id,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 403)
response = self.client.post(reverse('add-project-permission', args=[project.name]), {
'project': 42,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 200)
def test_project_perm_edit(self):
project = Project.objects.get(name='project-1')
wrongproject = Project.objects.get(name='project-2')
perm = project.permissions.first()
response = self.client.get(reverse('edit-project-permission', args=[project.name, perm.id]))
self.assertEqual(response.status_code, 200)
# user
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
user = User.objects.create(username='newuser')
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': user.username,
})
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
perm = ProjectPermission.objects.get(pk=perm.pk)
self.assertEquals(user, perm.grantee)
# group
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': 'newgroup',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
group = Group.objects.create(name='newgroup')
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_GROUP,
'grantee_id': 42,
'grantee_name': group.name,
})
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
perm = ProjectPermission.objects.get(pk=perm.pk)
self.assertEquals(group, perm.grantee)
# team
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': 'newteam',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'does not exists')
team = Team.objects.create(name='newteam')
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': project.id,
'grantee_type': PermModel.GRANTEE_TEAM,
'grantee_id': 42,
'grantee_name': team.name,
})
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
perm = ProjectPermission.objects.get(pk=perm.pk)
self.assertEquals(team, perm.grantee)
# wrong project
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': wrongproject.id,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 403)
response = self.client.post(reverse('edit-project-permission', args=[project.name, perm.id]), {
'project': 42,
'grantee_type': PermModel.GRANTEE_USER,
'grantee_id': 42,
'grantee_name': 'newuser',
})
self.assertEqual(response.status_code, 200)
def test_project_perm_delete(self):
project = Project.objects.get(name='project-1')
perm = project.permissions.first()
count = project.permissions.count()
ProjectPermission.objects.get(project=project, id=perm.id)
response = self.client.get(reverse('delete-project-permission', args=[project.name, perm.id]))
self.assertEqual(response.status_code, 405)
response = self.client.post(reverse('delete-project-permission', args=[project.name, perm.id]))
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
project = Project.objects.get(pk=project.pk)
self.assertEqual(project.permissions.count(), count - 1)
def test_project_perm_toggle(self):
project = Project.objects.get(name='project-1')
perm = project.permissions.first()
perm.create_issue = True
perm.save()
response = self.client.get(reverse('toggle-project-permission', args=[project.name, perm.id, 'create_issue']))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content.decode('utf-8'), '0')
perm = ProjectPermission.objects.get(pk=perm.pk)
self.assertEqual(perm.create_issue, False)
response = self.client.get(reverse('toggle-project-permission', args=[project.name, perm.id, 'create_issue']))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content.decode('utf-8'), '1')
perm = ProjectPermission.objects.get(pk=perm.pk)
self.assertEqual(perm.create_issue, True)
class TestGlobalPerm(TestCase):
fixtures = ['test_permissions']
def test_direct(self):
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm = GlobalPermission.objects.create(
grantee_type=PermModel.GRANTEE_USER,
grantee_id=user.id,
create_project=False,
access_project=False)
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.create_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.access_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertTrue(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
def test_through_group(self):
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
group = Group.objects.get(name='group')
user.groups.add(group)
user.save()
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm = GlobalPermission.objects.create(
grantee_type=PermModel.GRANTEE_GROUP,
grantee_id=group.id,
create_project=False,
access_project=False)
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.create_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.access_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertTrue(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
def test_through_team_direct(self):
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
team = Team.objects.get(name='team')
team.users.add(user)
team.save()
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm = GlobalPermission.objects.create(
grantee_type=PermModel.GRANTEE_TEAM,
grantee_id=team.id,
create_project=False,
access_project=False)
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.create_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.access_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertTrue(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
def test_through_team_throught_group(self):
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
group = Group.objects.get(name='group')
team = Team.objects.get(name='team')
user.groups.add(group)
user.save()
team.groups.add(group)
team.save()
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm = GlobalPermission.objects.create(
grantee_type=PermModel.GRANTEE_TEAM,
grantee_id=team.id,
create_project=False,
access_project=False)
self.assertFalse(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.create_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertFalse(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
perm.access_project = True
perm.save()
self.assertTrue(user.has_perm('create_project'))
self.assertTrue(user.has_perm('access_project'))
self.assertFalse(guess.has_perm('create_project'))
class TestProjectPerm(TestCase):
fixtures = ['test_permissions']
def test_direct(self):
project1 = Project.objects.get(name='project-1')
project2 = Project.objects.get(name='project-2')
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(guess.has_perm('create_issue', project1))
perm = ProjectPermission.objects.create(
project=project1,
grantee_type=PermModel.GRANTEE_USER,
grantee_id=user.id,
create_issue=False,
modify_issue=False)
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.create_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.modify_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertTrue(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
def test_through_group(self):
project1 = Project.objects.get(name='project-1')
project2 = Project.objects.get(name='project-2')
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
group = Group.objects.get(name='group')
user.groups.add(group)
user.save()
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(guess.has_perm('create_issue', project1))
perm = ProjectPermission.objects.create(
project=project1,
grantee_type=PermModel.GRANTEE_GROUP,
grantee_id=group.id,
create_issue=False,
modify_issue=False)
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.create_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.modify_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertTrue(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
def test_through_team_direct(self):
project1 = Project.objects.get(name='project-1')
project2 = Project.objects.get(name='project-2')
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
team = Team.objects.get(name='team')
team.users.add(user)
team.save()
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(guess.has_perm('create_issue', project1))
perm = ProjectPermission.objects.create(
project=project1,
grantee_type=PermModel.GRANTEE_TEAM,
grantee_id=team.id,
create_issue=False,
modify_issue=False)
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.create_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.modify_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertTrue(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
def test_through_team_throught_group(self):
project1 = Project.objects.get(name='project-1')
project2 = Project.objects.get(name='project-2')
user = User.objects.get(username='user')
guess = User.objects.get(username='guess')
group = Group.objects.get(name='group')
team = Team.objects.get(name='team')
user.groups.add(group)
user.save()
team.groups.add(group)
team.save()
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(guess.has_perm('create_issue', project1))
perm = ProjectPermission.objects.create(
project=project1,
grantee_type=PermModel.GRANTEE_TEAM,
grantee_id=team.id,
create_issue=False,
modify_issue=False)
self.assertFalse(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.create_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertFalse(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))
perm.modify_issue = True
perm.save()
self.assertTrue(user.has_perm('create_issue', project1))
self.assertTrue(user.has_perm('modify_issue', project1))
self.assertFalse(user.has_perm('create_issue', project2))
self.assertFalse(guess.has_perm('create_issue', project1))