/
outthevoid
/
python_microblogging_service_project
Обзор
Документация
Войти
/
outthevoid
/
python_microblogging_service_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/test_medias.py
90 строк
3 KB
VladimirChukavin
Revert "Вернул проект в исходное состояние."
07 апр 2026, 14:01
07 апр 2026, 14:01
7531b60
Код
Авторство
О чём код?
import pathlib import pytest from httpx import AsyncClient @pytest.mark.asyncio async def test_upload_media_success( client: AsyncClient, media_tmp_dir: pathlib.Path ) -> None: """ Проверяет успешную загрузку корректного медиафайла. Отправляет файл с допустимым расширением и ожидает успешный статус, положительный результат и целочисленный идентификатор медиа. """ response = await client.post( "/api/medias", headers={"api-key": "alice-key"}, files={"file": ("image.jpg", b"fake-image-content", "image/jpeg")}, ) assert response.status_code == 200 result = response.json() assert result["result"] is True assert isinstance(result["media_id"], int) @pytest.mark.asyncio async def test_upload_media_unsupported_extension(client: AsyncClient) -> None: """ Проверяет обработку неподдерживаемого типа файла. Отправляет файл с недопустимым расширением и ожидает статус 400, тип ошибки ``validation_error`` и соответствующее сообщение. """ response = await client.post( "/api/medias", headers={"api-key": "alice-key"}, files={"file": ("document.txt", b"hello", "text/plain")}, ) assert response.status_code == 400 result = response.json() assert result["result"] is False assert result["error_type"] == "validation_error" assert result["error_message"] == "Неподдерживаемый тип файла" @pytest.mark.asyncio async def test_upload_media_empty_file(client: AsyncClient) -> None: """ Проверяет обработку пустого файла при загрузке. Отправляет файл с нулевой длиной содержимого и ожидает статус 400, тип ошибки ``validation_error`` и сообщение «Пустой файл». """ response = await client.post( "/api/medias", headers={"api-key": "alice-key"}, files={"file": ("image.png", b"", "image/png")}, ) assert response.status_code == 400 result = response.json() assert result["result"] is False assert result["error_type"] == "validation_error" assert result["error_message"] == "Пустой файл" @pytest.mark.asyncio async def test_upload_media_requires_file_field(client: AsyncClient) -> None: """ Проверяет, что загрузка медиа требует обязательного поля файла. Отправляет запрос без поля ``file`` и ожидает статус 422 от валидации входных данных FastAPI. """ response = await client.post( "/api/medias", headers={"api-key": "alice-key"}, ) assert response.status_code == 422