Source code for users_api.tests.test_users_researcher_registration

# pylint: disable=W0621,C0114,C0116,W0212,W0613
import json

import pytest
from django.test.client import Client
from oauth2_provider.models import AccessToken
from rest_framework import status

from users_api.models import SetPasswordCode, WdaeUser


[docs] def test_fail_register_wrong_id( client: Client, researcher_without_password: WdaeUser, ) -> None: url = "/api/v3/users/register" data = { "email": researcher_without_password.email, "name": "ok name", } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED
[docs] def test_reset_pass_without_registration( client: Client, researcher_without_password: WdaeUser, ) -> None: url = "/api/v3/users/forgotten_password" data = {"email": researcher_without_password.email} response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_200_OK
[docs] @pytest.mark.django_db def test_reset_pass_without_registration_wrong_email( client: Client, ) -> None: url = "/api/v3/users/forgotten_password" data = {"email": "wrong@email.com"} response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_200_OK
[docs] def test_successful_register( client: Client, researcher_without_password: WdaeUser, ) -> None: name = "NEW_NAME" url = "/api/v3/users/register" data = { "name": name, "email": researcher_without_password.email, } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED user = WdaeUser.objects.get(email=researcher_without_password.email) assert user.name == name
[docs] def test_successful_register_empty_name( client: Client, researcher_without_password: WdaeUser, ) -> None: old_name = researcher_without_password.name url = "/api/v3/users/register" data = {"name": "", "email": researcher_without_password.email} response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED user = WdaeUser.objects.get(email=researcher_without_password.email) assert user.name == old_name
[docs] def test_successful_register_missing_name( client: Client, researcher_without_password: WdaeUser, ) -> None: old_name = researcher_without_password.name url = "/api/v3/users/register" data = { "email": researcher_without_password.email, } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED user = WdaeUser.objects.get(email=researcher_without_password.email) assert user.name == old_name
[docs] def test_register_twice( client: Client, researcher_without_password: WdaeUser, ) -> None: url = "/api/v3/users/register" data = { "name": researcher_without_password.name, "email": researcher_without_password.email, } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED
[docs] def test_registration_all_steps( client: Client, researcher_without_password: WdaeUser, tokens: tuple[AccessToken, AccessToken], # noqa ) -> None: url = "/api/v3/users/register" data = { "name": researcher_without_password.name, "email": researcher_without_password.email, } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_201_CREATED code = SetPasswordCode.get_code(researcher_without_password) assert code is not None url = "/api/v3/users/set_password" session = client.session session.update({"set_code": code.path}) session.save() data = { "new_password1": "samplenewpassword", "new_password2": "samplenewpassword", } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_302_FOUND url = "/accounts/login" data = { "username": researcher_without_password.email, "password": "samplenewpassword", } response = client.post( url, json.dumps(data), content_type="application/json", format="json", ) assert response.status_code == status.HTTP_302_FOUND