kpsul/kfet/tests/test_tests_utils.py
2018-10-06 13:15:33 +02:00

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