/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
tests/unit/middleware/test_logging.py
127 строк
5 KB
User
0.4.4 - унифицирована загрузка middleware в application.py; дописаны тесты: - Всего тестов: 341 - Общее покрытие: 64%
05 июл 2026, 14:02
05 июл 2026, 14:02
27abc28
Код
Авторство
О чём код?
"""Unit-тесты для LoggingMiddleware.""" import logging import pytest from liquidcode.http import HttpRequest, HttpResponse from liquidcode.middleware.logging import LoggingMiddleware class TestLoggingMiddleware: """Тесты middleware логирования.""" @pytest.fixture def middleware(self): """Создание middleware.""" return LoggingMiddleware() def test_creation(self, middleware): """Создание middleware.""" assert middleware is not None def test_log_request(self, middleware, caplog): """Логирование запроса.""" request = HttpRequest(path="/test", method="GET") response = HttpResponse(content="test", status=200) with caplog.at_level(logging.INFO): call_next = lambda req: response result = middleware(request, call_next) assert result.get_status() == 200 assert len(caplog.records) == 2 assert "GET /test" in caplog.text assert "→ 200" in caplog.text def test_log_different_methods(self, middleware, caplog): """Логирование разных методов запросов.""" methods = ["GET", "POST", "PUT", "DELETE", "PATCH"] for method in methods: with caplog.at_level(logging.INFO): request = HttpRequest(path="/test", method=method) response = HttpResponse(content="test", status=200) call_next = lambda req: response result = middleware(request, call_next) assert result.get_status() == 200 assert method in caplog.text def test_log_different_paths(self, middleware, caplog): """Логирование разных путей.""" paths = ["/users", "/api/v1/data", "/static/file.js", "/"] for path in paths: with caplog.at_level(logging.INFO): request = HttpRequest(path=path, method="GET") response = HttpResponse(content="test", status=200) call_next = lambda req: response result = middleware(request, call_next) assert path in caplog.text def test_log_different_statuses(self, middleware, caplog): """Логирование разных статусов ответов.""" statuses = [200, 201, 400, 401, 404, 500] for status in statuses: with caplog.at_level(logging.INFO): request = HttpRequest(path="/test", method="GET") response = HttpResponse(content="test", status=status) call_next = lambda req: response result = middleware(request, call_next) assert str(status) in caplog.text def test_response_passed_through(self, middleware): """Ответ передается дальше без изменений.""" original_response = HttpResponse(content="test", status=200) request = HttpRequest(path="/test", method="GET") call_next = lambda req: original_response response = middleware(request, call_next) assert response.get_content() == "test" assert response.get_status() == 200 def test_middleware_chain(self): """Middleware работает в цепочке.""" def create_next_response(content): def call_next(request): return HttpResponse(content=content, status=200) return call_next middleware1 = LoggingMiddleware() middleware2 = LoggingMiddleware() request = HttpRequest(path="/test", method="GET") response = middleware1(request, create_next_response("test1")) assert response.get_content() == "test1" response = middleware2(request, create_next_response("test2")) assert response.get_content() == "test2" def test_logger_name(self, middleware, caplog): """Проверка имени логгера.""" request = HttpRequest(path="/test", method="GET") response = HttpResponse(content="test", status=200) with caplog.at_level(logging.INFO): call_next = lambda req: response middleware(request, call_next) assert len(caplog.records) == 2 def test_elapsed_time_logged(self, middleware, caplog): """Время выполнения логируется.""" request = HttpRequest(path="/test", method="GET") response = HttpResponse(content="test", status=200) with caplog.at_level(logging.INFO): call_next = lambda req: response middleware(request, call_next) assert "ms" in caplog.text or len(caplog.records) == 2