96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
|
from django.contrib.auth import get_user_model
|
||
|
from django.contrib.auth.models import Permission
|
||
|
from django.contrib.contenttypes.models import ContentType
|
||
|
from django.test import TestCase
|
||
|
|
||
|
from gestioncof.models import CofProfile
|
||
|
|
||
|
from ..models import Account
|
||
|
from .testcases import TestCaseMixin
|
||
|
from .utils import (
|
||
|
create_user, create_team, create_root, get_perms, user_add_perms,
|
||
|
)
|
||
|
|
||
|
|
||
|
User = get_user_model()
|
||
|
|
||
|
|
||
|
class UserHelpersTests(TestCaseMixin, TestCase):
|
||
|
|
||
|
def test_create_user(self):
|
||
|
"""create_user creates a basic user and its account."""
|
||
|
u = create_user()
|
||
|
a = u.profile.account_kfet
|
||
|
|
||
|
self.assertInstanceExpected(u, {
|
||
|
'get_full_name': 'first last',
|
||
|
'username': 'user',
|
||
|
})
|
||
|
self.assertFalse(u.user_permissions.exists())
|
||
|
|
||
|
self.assertEqual('000', a.trigramme)
|
||
|
|
||
|
def test_create_team(self):
|
||
|
u = create_team()
|
||
|
a = u.profile.account_kfet
|
||
|
|
||
|
self.assertInstanceExpected(u, {
|
||
|
'get_full_name': 'team member',
|
||
|
'username': 'team',
|
||
|
})
|
||
|
self.assertTrue(u.has_perm('kfet.is_team'))
|
||
|
|
||
|
self.assertEqual('100', a.trigramme)
|
||
|
|
||
|
def test_create_root(self):
|
||
|
u = create_root()
|
||
|
a = u.profile.account_kfet
|
||
|
|
||
|
self.assertInstanceExpected(u, {
|
||
|
'get_full_name': 'super user',
|
||
|
'username': 'root',
|
||
|
'is_superuser': True,
|
||
|
'is_staff': True,
|
||
|
})
|
||
|
|
||
|
self.assertEqual('200', a.trigramme)
|
||
|
|
||
|
|
||
|
class PermHelpersTest(TestCaseMixin, TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
cts = ContentType.objects.get_for_models(Account, CofProfile)
|
||
|
self.perm1 = Permission.objects.create(
|
||
|
content_type=cts[Account],
|
||
|
codename='test_perm',
|
||
|
name='Perm for test',
|
||
|
)
|
||
|
self.perm2 = Permission.objects.create(
|
||
|
content_type=cts[CofProfile],
|
||
|
codename='another_test_perm',
|
||
|
name='Another one',
|
||
|
)
|
||
|
self.perm_team = Permission.objects.get(
|
||
|
content_type__app_label='kfet',
|
||
|
codename='is_team',
|
||
|
)
|
||
|
|
||
|
def test_get_perms(self):
|
||
|
perms = get_perms('kfet.test_perm', 'gestioncof.another_test_perm')
|
||
|
self.assertDictEqual(perms, {
|
||
|
'kfet.test_perm': self.perm1,
|
||
|
'gestioncof.another_test_perm': self.perm2,
|
||
|
})
|
||
|
|
||
|
def test_user_add_perms(self):
|
||
|
user = User.objects.create_user(username='user', password='user')
|
||
|
user.user_permissions.add(self.perm1)
|
||
|
|
||
|
user_add_perms(user, ['kfet.is_team', 'gestioncof.another_test_perm'])
|
||
|
|
||
|
self.assertQuerysetEqual(
|
||
|
user.user_permissions.all(),
|
||
|
map(repr, [self.perm1, self.perm2, self.perm_team]),
|
||
|
ordered=False,
|
||
|
)
|