/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
tests/unit/test_http_server.py
156 строк
6 KB
User
0.4.9 - переработка документации, рефакторинг кода, покрытие тестами 70%
06 июл 2026, 13:37
06 июл 2026, 13:37
79b2ebc
Код
Авторство
О чём код?
"""Unit-тесты для server/http module.""" import pytest from unittest.mock import Mock, patch, MagicMock from liquidcode.server.http import HTTPServerManager from liquidcode.kernel import Kernel from liquidcode.routing import Router from liquidcode.container import Container class TestHTTPServerManager: """Тесты HTTPServerManager.""" def test_creation(self): """Создание HTTPServerManager.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel) assert server.kernel == kernel assert server.host == "localhost" assert server.port == 8000 assert server._debug is False def test_creation_with_custom_host_port(self): """Создание HTTPServerManager с кастомными хостом и портом.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel, host="127.0.0.1", port=9000) assert server.host == "127.0.0.1" assert server.port == 9000 def test_set_debug(self): """Включение режима отладки.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel) assert server._debug is False server.set_debug(True) assert server._debug is True def test_run_uses_default_values(self): """Метод run использует значения по умолчанию.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel) with patch('liquidcode.server.http.create_server') as mock_create: mock_server = MagicMock() mock_create.return_value = mock_server server.run() mock_create.assert_called_once() call_args = mock_create.call_args assert call_args[0][0] == "localhost" assert call_args[0][1] == 8000 def test_run_uses_custom_host_port(self): """Метод run использует кастомные хост и порт.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel) with patch('liquidcode.server.http.create_server') as mock_create: mock_server = MagicMock() mock_create.return_value = mock_server server.run(host="127.0.0.1", port=9000) mock_create.assert_called_once() call_args = mock_create.call_args assert call_args[0][0] == "127.0.0.1" assert call_args[0][1] == 9000 def test_run_with_method_override(self): """Метод run использует параметры метода поверх значений по умолчанию.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel, host="localhost", port=8000) with patch('liquidcode.server.http.create_server') as mock_create: mock_server = MagicMock() mock_create.return_value = mock_server # Параметры метода должны перекрыть значения по умолчанию server.run() mock_create.assert_called_once() call_args = mock_create.call_args assert call_args[0][0] == "localhost" assert call_args[0][1] == 8000 def test_run_starts_server(self): """Метод run запускает serve_forever.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel) with patch('liquidcode.server.http.create_server') as mock_create: mock_server = MagicMock() mock_create.return_value = mock_server # Имитируем KeyboardInterrupt для завершения with patch('builtins.print'): try: server.run() except KeyboardInterrupt: pass # Проверяем, что serve_forever был вызван mock_server.serve_forever.assert_called() def test_run_handles_keyboard_interrupt(self): """Метод run обрабатывает KeyboardInterrupt.""" router = Router() container = Container() kernel = Kernel(router, container) server = HTTPServerManager(kernel) with patch('liquidcode.server.http.create_server') as mock_create: mock_server = MagicMock() mock_create.return_value = mock_server # Поднимаем KeyboardInterrupt при вызове serve_forever mock_server.serve_forever.side_effect = KeyboardInterrupt() # Должно завершиться без исключения try: server.run() except KeyboardInterrupt: # Ожидаемое поведение - KeyboardInterrupt не должен выбрасываться pass # Проверяем, что shutdown был вызван mock_server.shutdown.assert_called()