Пункт 12 ревью 2026-09-28 17:35 (docs/changes/026): tests/test_app.py (936 строк) разнесён на test_security, test_devices, test_operations, test_backups, test_events, test_ids_migrations, test_architecture; общие хелперы — tests/helpers.py. Тела тестов не менялись (AST совпадает). security.reset_all_failures() — фикстура сбрасывает счётчики попыток по всем ключам, тесты не зависят от порядка. Тесты: 36 из 36 полным прогоном, каждый модуль отдельно и в обратном порядке; тест-линтер после переноса проверен мутацией. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
16 lines
744 B
Python
16 lines
744 B
Python
"""Общие хелперы тестов: клиент RouterOS с мок-транспортом, минимальный ASGI-запрос."""
|
|
import httpx
|
|
from fastapi import Request
|
|
|
|
from app.ros.client import RosClient
|
|
|
|
|
|
def ros_client(handler) -> RosClient:
|
|
return RosClient("r1", 443, "admin", "pw", transport=httpx.MockTransport(handler))
|
|
|
|
|
|
def _request(client_host: str | None, xff: str | None = None) -> Request:
|
|
"""Минимальный ASGI-запрос для проверки security.client_ip без реального соединения."""
|
|
headers = [(b"x-forwarded-for", xff.encode())] if xff else []
|
|
return Request({"type": "http", "client": (client_host, 1) if client_host else None, "headers": headers})
|