/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.2.0
tests/test_http.py
166 строк
5 KB
User
ci: настроен Black и flake8 для автоматического форматирования кода
04 июл 2026, 08:14
04 июл 2026, 08:14
4778ed6
Код
Авторство
О чём код?
"""Тесты для HTTP-реализаций Request и Response.""" import pytest from liquidcode.http import HttpRequest, HttpResponse class TestHttpRequest: """Тесты для HttpRequest.""" def test_basic_request(self): """Создание базового GET-запроса.""" request = HttpRequest( path="/users", method="GET", ) assert request.get_method() == "GET" assert request.get_path() == "/users" assert request.get_headers() == {} assert request.get_body() == b"" assert request.get_query_params() == {} assert request.get_route_params() == {} def test_request_with_headers(self): """Запрос с заголовками.""" headers = { "Content-Type": "application/json", "Authorization": "Bearer token", } request = HttpRequest( path="/api/data", method="POST", headers=headers, ) assert request.get_headers() == headers def test_request_with_body(self): """Запрос с телом.""" body = b'{"name": "test"}' request = HttpRequest( path="/api/data", method="POST", body=body, ) assert request.get_body() == body def test_request_with_query_params_in_path(self): """Парсинг query-параметров из пути.""" request = HttpRequest( path="/search?q=test&page=1", method="GET", ) params = request.get_query_params() assert params["q"] == "test" assert params["page"] == "1" def test_request_with_predefined_query_params(self): """Передача предопределённых query-параметров.""" request = HttpRequest( path="/search", method="GET", query_params={"q": "custom", "page": "2"}, ) params = request.get_query_params() assert params["q"] == "custom" assert params["page"] == "2" def test_route_params(self): """Установка и получение параметров маршрута.""" request = HttpRequest(path="/users/123", method="GET") request.set_route_params({"id": "123"}) assert request.get_route_params() == {"id": "123"} def test_attributes(self): """Пользовательские атрибуты запроса.""" request = HttpRequest(path="/test", method="GET") request.set_attr("user_id", 42) assert request.get_attr("user_id") == 42 assert request.get_attr("nonexistent", "default") == "default" def test_method_uppercase(self): """Метод всегда в верхнем регистре.""" request = HttpRequest(path="/test", method="get") assert request.get_method() == "GET" def test_repr(self): """Строковое представление запроса.""" request = HttpRequest(path="/users", method="GET") assert repr(request) == "<HttpRequest GET /users>" class TestHttpResponse: """Тесты для HttpResponse.""" def test_basic_response(self): """Базовый ответ с дефолтными значениями.""" response = HttpResponse() assert response.get_status() == 200 assert response.get_content() is None assert response.get_headers() == {} def test_response_with_content(self): """Ответ с контентом.""" response = HttpResponse(content={"message": "Hello"}, status=201) assert response.get_content() == {"message": "Hello"} assert response.get_status() == 201 def test_response_with_headers(self): """Ответ с заголовками.""" headers = {"Content-Type": "application/json", "X-Custom": "value"} response = HttpResponse(content="test", headers=headers) assert response.get_headers() == headers def test_setters(self): """Методы-сеттеры.""" response = HttpResponse() response.set_content({"new": "data"}) response.set_status(404) response.set_header("X-Custom", "header") assert response.get_content() == {"new": "data"} assert response.get_status() == 404 assert response.get_headers()["X-Custom"] == "header" def test_headers_mutable(self): """Заголовки могут быть изменены.""" response = HttpResponse() response.set_header("A", "1") response.set_header("B", "2") headers = response.get_headers() assert headers == {"A": "1", "B": "2"} def test_repr(self): """Строковое представление ответа.""" response = HttpResponse(status=404) assert repr(response) == "<HttpResponse status=404>" def test_content_various_types(self): """Различные типы контента.""" # Словарь response1 = HttpResponse(content={"key": "value"}) assert response1.get_content() == {"key": "value"} # Строка response2 = HttpResponse(content="text") assert response2.get_content() == "text" # Байты response3 = HttpResponse(content=b"bytes") assert response3.get_content() == b"bytes" # None response4 = HttpResponse(content=None) assert response4.get_content() is None