Source code for rasenmaeher_api.testhelpers

"""Helpers for testing, unit and manual"""
from typing import Tuple, List
import logging

from .db import Person, Enrollment, LoginCode

[docs] LOGGER = logging.getLogger(__name__)
[docs] async def create_test_users() -> Tuple[List[str], List[str]]: """Create a few test users and work ids returns list of work-ids and their corresponding jwt tokens """ work_ids: List[str] = [] jwt_tokens: List[str] = [] # Create "anon_admin", this is also done in /firstuser/add-admin if one not exists yet # anon_admin is only used to "approve" the newly created admin users. Aka user for "anon_admin_session". _anon_admin_added = await Person.is_callsign_available(callsign="anon_admin") if _anon_admin_added is False: _anon_user = await Person.create_with_cert(callsign="anon_admin", extra={}) _ = await _anon_user.assign_role(role="anon_admin") _anon_admin_user = await Person.by_callsign(callsign="anon_admin") # CREATE USER secondadmin # approved, admin role, approved by anon_admin _enrollment_pyteststuff = await Enrollment.create_for_callsign(callsign="pyteststuff", pool=None, extra={}) _user_pyteststuff = await _enrollment_pyteststuff.approve(approver=_anon_admin_user) _ = await _user_pyteststuff.assign_role(role="admin") _jwt_pyteststuff = await LoginCode.create_for_claims(claims={"sub": "pyteststuff"}) work_ids.append("pyteststuff") jwt_tokens.append(_jwt_pyteststuff) # CREATE USER secondadmin # approved, admin role, approved by pyteststuff _enrollment_secondadmin = await Enrollment.create_for_callsign(callsign="secondadmin", pool=None, extra={}) _user_secondadmin = await _enrollment_secondadmin.approve(approver=_user_pyteststuff) _ = await _user_secondadmin.assign_role(role="admin") _jwt_secondadmin = await LoginCode.create_for_claims(claims={"sub": "secondadmin"}) work_ids.append("secondadmin") jwt_tokens.append(_jwt_secondadmin) # CREATE USER kissa # approved, approved by secondadmin _enrollment_kissa = await Enrollment.create_for_callsign(callsign="kissa", pool=None, extra={}) _ = await _enrollment_kissa.approve(approver=_user_secondadmin) _jwt_kissa = await LoginCode.create_for_claims(claims={"sub": "kissa"}) work_ids.append("kissa") jwt_tokens.append(_jwt_kissa) # CREATE USER koira # not approved _ = await Enrollment.create_for_callsign(callsign="koira", pool=None, extra={}) _jwt_koira = await LoginCode.create_for_claims(claims={"sub": "koira"}) work_ids.append("koira") jwt_tokens.append(_jwt_koira) # TODO CREATE POOL FOR secondadmin return work_ids, jwt_tokens