Added tests for dav_events.roles

This commit is contained in:
2023-02-26 20:25:56 +01:00
parent e024744714
commit f79d54c752
5 changed files with 171 additions and 28 deletions

View File

@@ -2,6 +2,7 @@
from __future__ import unicode_literals
import datetime
import json
import logging
import os
from django.apps import apps
from django.contrib.auth import get_user_model
@@ -12,21 +13,30 @@ from ..models.eventstatus import EventStatus
class RoleMixin:
def create_user_for_role(self, role_name, password, first_name, last_name):
group = Group(name=role_name)
group.save()
def create_user_for_role(self, role_name, first_name, last_name, password='password'):
app_config = apps.get_app_config('dav_events')
var_name = 'groups_{}'.format(role_name)
if hasattr(app_config.settings, var_name):
# There are groups configured for this role.
# Use the first group name of the configured groups.
group_name = getattr(app_config.settings, var_name)[0]
else:
# There are no groups configured for this role.
# Configure one.
group_name = role_name
setting_name = 'groups_{}'.format(role_name)
setattr(app_config.settings, setting_name, [group_name])
# Make sure the configured group exists.
group = Group.objects.get_or_create(name=group_name)[0]
user_model = get_user_model()
email = '{}@localhost'.format(role_name)
user_name = email
number = user_model.objects.all().count() + 1
user_name = 'user{}-{}@localhost'.format(number, role_name)
user = user_model.objects.create_user(username=user_name, password=password, email=user_name,
first_name=first_name, last_name=last_name)
user.groups.add(group)
setting_name = 'groups_{}'.format(role_name)
app_config = apps.get_app_config('dav_events')
setattr(app_config.settings, setting_name, [role_name])
return user