Source code for users_api.tests.conftest

# ruff: noqa: ARG001, S106
# pylint: disable=W0621,C0114,C0116,W0212,W0613

import uuid
from datetime import timedelta
from typing import cast

import pytest
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.utils import timezone
from oauth2_provider.models import Application, get_access_token_model
from rest_framework.test import APIClient

from users_api.models import WdaeUser


[docs] @pytest.fixture def user_model() -> type[WdaeUser]: return cast(type[WdaeUser], get_user_model()) # type: ignore
[docs] @pytest.fixture def empty_group(db: None) -> Group: return Group.objects.create(name="Empty group")
[docs] @pytest.fixture def empty_group_2(db: None) -> Group: return Group.objects.create(name="Empty group 2")
[docs] @pytest.fixture def active_user(db: None, user_model: type[WdaeUser]) -> WdaeUser: user = user_model.objects.create_user( # type: ignore email="new@new.com", password="secret", ) assert user.is_active return user
[docs] @pytest.fixture def inactive_user(db: None, user_model: type[WdaeUser]) -> WdaeUser: user = user_model.objects.create_user(email="new@new.com") # type: ignore assert not user.is_active return user
[docs] @pytest.fixture def logged_in_user( active_user: WdaeUser, oauth_app: Application, ) -> tuple[WdaeUser, APIClient]: access_token = get_access_token_model() user_access_token = access_token( user=active_user, scope="read write", expires=timezone.now() + timedelta(seconds=300), token="active-user-token", application=oauth_app, ) user_access_token.save() client = APIClient(HTTP_AUTHORIZATION="Bearer active-user-token") client.login(email=active_user.email, password="secret") return active_user, client
[docs] @pytest.fixture def admin_group(user: WdaeUser) -> Group: return Group.objects.create(name=WdaeUser.SUPERUSER_GROUP)
[docs] @pytest.fixture def researcher(db: None) -> WdaeUser: res = WdaeUser.objects.create_user(email="fake@fake.com") # type: ignore res.name = "fname" res.set_password("alabala") res.save() return res
[docs] @pytest.fixture def researcher_without_password(db: None) -> WdaeUser: res = WdaeUser.objects.create_user(email="fake@fake.com") # type: ignore res.name = "fname" res.save() return res
[docs] @pytest.fixture def unique_test_user(db: None) -> WdaeUser: uid = uuid.uuid1() res = WdaeUser.objects.create_user( # type: ignore email=f"fake{uid}@unique.com") res.name = f"fname{uid}" res.set_password("alabala") res.save() return res