import pytest from httpx import AsyncClient from src.core.settings import settings from src.schemas.users import User async def test_registration(ac): user = {"username": "kot", "email": "super@kot.ru", "password": "P@ssw0rd"} result = await ac.post( f"{settings.api.v1_login_url}/signup", json=user, ) assert result.status_code == 200 assert User.model_validate(result.json()) assert result.json()["is_active"] @pytest.mark.parametrize( "fingerprint, username,password,expected_status", [("string", "kot", "P@ssw0rd", 200), ("", "kot", "P@ssw0rd", 422)], ) async def test_login( ac: AsyncClient, fingerprint: str, username: str, password: str, expected_status: int, ): result = await ac.post( f"{settings.api.v1_login_url}/login", data={ "fingerprint": fingerprint, "grant_type": "password", "username": username, "password": password, }, ) assert result.status_code == expected_status if expected_status == 200: assert result.json().get("access_token") is not None else: json_response = result.json() if expected_status == 422: assert "detail" in json_response