forked from DGNum/gestioCOF
Add tests for kfet views.
kfet.tests.testcases embed mixins for TestCase: - TestCaseMixin provides assertion helpers, - ViewTestCaseMixin provides a few basic tests, which are common to every view. kfet.tests.utils provides helpers for users and permissions management. Each kfet view get a testcase (at least very basic) in kfet.tests.test_views.
This commit is contained in:
parent
343b52f986
commit
2cfce1c921
4 changed files with 2265 additions and 206 deletions
|
@ -7,44 +7,14 @@ from ..models import Account
|
|||
User = get_user_model()
|
||||
|
||||
|
||||
def user_add_perms(user, perms_labels):
|
||||
"""
|
||||
Add perms to a user.
|
||||
|
||||
Args:
|
||||
user (User instance)
|
||||
perms (list of str 'app.perm_name')
|
||||
|
||||
Returns:
|
||||
The same user (refetched from DB to avoid missing perms)
|
||||
|
||||
"""
|
||||
u_labels = set(perms_labels)
|
||||
|
||||
perms = []
|
||||
for label in u_labels:
|
||||
app_label, codename = label.split('.', 1)
|
||||
perms.append(
|
||||
Permission.objects.get(
|
||||
content_type__app_label=app_label,
|
||||
codename=codename,
|
||||
)
|
||||
)
|
||||
|
||||
user.user_permissions.add(*perms)
|
||||
|
||||
# If permissions have already been fetched for this user, we need to reload
|
||||
# it to avoid using of the previous permissions cache.
|
||||
# https://docs.djangoproject.com/en/1.11/topics/auth/default/#permission-caching
|
||||
return User.objects.get(pk=user.pk)
|
||||
|
||||
|
||||
def _create_user_and_account(user_attrs, account_attrs, perms=None):
|
||||
user_attrs.setdefault('password', user_attrs['username'])
|
||||
user = User.objects.create_user(**user_attrs)
|
||||
user_pwd = user_attrs.pop('password', user_attrs['username'])
|
||||
user = User.objects.create(**user_attrs)
|
||||
user.set_password(user_pwd)
|
||||
user.save()
|
||||
|
||||
account_attrs['cofprofile'] = user.profile
|
||||
kfet_pwd = account_attrs.pop('password', None)
|
||||
kfet_pwd = account_attrs.pop('password', 'kfetpwd_{}'.format(user_pwd))
|
||||
|
||||
account = Account.objects.create(**account_attrs)
|
||||
|
||||
|
@ -52,8 +22,6 @@ def _create_user_and_account(user_attrs, account_attrs, perms=None):
|
|||
user = user_add_perms(user, perms)
|
||||
|
||||
if 'kfet.is_team' in perms:
|
||||
if kfet_pwd is None:
|
||||
kfet_pwd = 'kfetpwd_{}'.format(user_attrs['password'])
|
||||
account.change_pwd(kfet_pwd)
|
||||
account.save()
|
||||
|
||||
|
@ -98,8 +66,41 @@ def create_root(username='root', trigramme='200', **kwargs):
|
|||
user_attrs.setdefault('first_name', 'super')
|
||||
user_attrs.setdefault('last_name', 'user')
|
||||
user_attrs.setdefault('email', 'mail@root.net')
|
||||
user_attrs['is_superuser'] = user_attrs['is_staff'] = True
|
||||
|
||||
account_attrs = kwargs.setdefault('account_attrs', {})
|
||||
account_attrs.setdefault('trigramme', trigramme)
|
||||
|
||||
return _create_user_and_account(**kwargs)
|
||||
|
||||
|
||||
def get_perms(*labels):
|
||||
perms = {}
|
||||
for label in set(labels):
|
||||
app_label, codename = label.split('.', 1)
|
||||
perms[label] = Permission.objects.get(
|
||||
content_type__app_label=app_label,
|
||||
codename=codename,
|
||||
)
|
||||
return perms
|
||||
|
||||
|
||||
def user_add_perms(user, perms_labels):
|
||||
"""
|
||||
Add perms to a user.
|
||||
|
||||
Args:
|
||||
user (User instance)
|
||||
perms (list of str 'app.perm_name')
|
||||
|
||||
Returns:
|
||||
The same user (refetched from DB to avoid missing perms)
|
||||
|
||||
"""
|
||||
perms = get_perms(*perms_labels)
|
||||
user.user_permissions.add(*perms.values())
|
||||
|
||||
# If permissions have already been fetched for this user, we need to reload
|
||||
# it to avoid using of the previous permissions cache.
|
||||
# https://docs.djangoproject.com/en/1.11/topics/auth/default/#permission-caching
|
||||
return User.objects.get(pk=user.pk)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue