Control Server (FastAPI) с WEB UI (Jinja2 + HTMX) и JSON API для группового администрирования устройств RouterOS 7 через REST. - Устройства: список, статус (модель, канал, версии ROS/FW, uptime, доступные обновления), примечания, пароли шифруются (Fernet); фоновый опрос каждые 30 с и быстрое обнаружение недоступности (таймаут соединения 4 с). - Группы устройств и фильтры (устройства, резервные копии). - Резервные копии: .backup и .rsc (show-sensitive) создаются через REST, скачиваются сервером и загружаются в S3 (Yandex Object Storage). - Обновление ROS/FW и выбор канала, групповые операции задачами. - Интерфейс по утверждённому макету: светлая/тёмная темы, окна, шрифты IBM Plex локально. Docker Compose, SQLite в томе, минимальный набор тестов. - Планы и итоги каждого изменения — в docs/changes/. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
21 lines
758 B
Python
21 lines
758 B
Python
import pytest
|
|
from cryptography.fernet import Fernet
|
|
|
|
from app import db
|
|
from app.config import get_settings
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def env(tmp_path, monkeypatch):
|
|
monkeypatch.setenv("DATABASE_URL", f"sqlite:///{tmp_path}/test.db")
|
|
monkeypatch.setenv("SECRET_KEY", Fernet.generate_key().decode())
|
|
monkeypatch.setenv("API_TOKEN", "test-token")
|
|
monkeypatch.setenv("S3_BUCKET", "test-bucket")
|
|
monkeypatch.setenv("POLL_INTERVAL", "0") # фоновый опрос в тестах выключен
|
|
monkeypatch.setenv("ADMIN_USER", "admin") # не зависеть от реального .env
|
|
monkeypatch.setenv("ADMIN_PASSWORD", "pw")
|
|
get_settings.cache_clear()
|
|
db.init_db()
|
|
yield
|
|
get_settings.cache_clear()
|