/
outthevoid
/
python_microblogging_service_project
Обзор
Документация
Войти
/
outthevoid
/
python_microblogging_service_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/test_users.py
102 строки
3 KB
VladimirChukavin
Revert "Вернул проект в исходное состояние."
07 апр 2026, 14:01
07 апр 2026, 14:01
7531b60
Код
Авторство
О чём код?
from typing import Dict import pytest from httpx import AsyncClient @pytest.mark.asyncio async def test_get_current_user_profile( client: AsyncClient, auth_headers: Dict[str, str] ) -> None: """ Проверяет получение профиля текущего пользователя. Отправляет запрос к ``/api/users/me`` и ожидает успешный статус, флаг результата ``True``, имя пользователя «Alice» и две подписки. """ response = await client.get("/api/users/me", headers=auth_headers) assert response.status_code == 200 result = response.json() assert result["result"] is True assert result["user"]["name"] == "Alice" assert len(result["user"]["following"]) == 2 @pytest.mark.asyncio async def test_get_user_by_id( client: AsyncClient, auth_headers: Dict[str, str] ) -> None: """ Проверяет получение профиля пользователя по идентификатору. Отправляет запрос к ``/api/users/2`` и ожидает успешный статус, флаг результата ``True`` и корректные данные пользователя с id=2. """ response = await client.get("/api/users/2", headers=auth_headers) assert response.status_code == 200 result = response.json() assert result["result"] is True assert result["user"]["id"] == 2 assert result["user"]["name"] == "Bob" @pytest.mark.asyncio async def test_follow_user_success( client: AsyncClient, auth_headers: Dict[str, str] ) -> None: """ Проверяет успешное оформление подписки на пользователя. Отправляет запрос от имени пользователя с API-ключом ``charlie-key`` для подписки на пользователя с id=2 и ожидает успешный результат. """ response = await client.post( "/api/users/2/follow", headers={"api-key": "charlie-key"} ) assert response.status_code == 200 assert response.json()["result"] is True @pytest.mark.asyncio async def test_follow_self_validation_error( client: AsyncClient, auth_headers: Dict[str, str] ) -> None: """ Проверяет валидацию при попытке подписаться на самого себя. Отправляет запрос к ``/api/users/1/follow`` от имени пользователя с id=1 и ожидает статус 400 и тип ошибки ``validation_error``. """ response = await client.post("/api/users/1/follow", headers=auth_headers) assert response.status_code == 400 result = response.json() assert result["result"] is False assert result["error_type"] == "validation_error" @pytest.mark.asyncio async def test_unfollow_user_success( client: AsyncClient, auth_headers: Dict[str, str] ) -> None: """ Проверяет успешное удаление подписки на пользователя. Отправляет запрос к ``/api/users/2/follow`` методом DELETE и ожидает успешный статус и положительный результат. """ response = await client.delete("/api/users/2/follow", headers=auth_headers) assert response.status_code == 200 assert response.json()["result"] is True