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_root, create_team, create_user, 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, )