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, )