Files
ros_control/tests/conftest.py
T
ayurishchevandClaude Opus 5.5 e1f197ccff Тесты по модулям предметных областей
Пункт 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>
2026-09-28 21:30:23 +03:00

31 lines
1.6 KiB
Python

import pytest
from cryptography.fernet import Fernet
from app import db, security
from app.config import get_settings
from app.services import backups
# секреты для тестов: значения, проходящие проверку insecure_settings (см. app/config.py), но не боевые
API_TOKEN = "test-api-token-0123456789abcdef0" # 32 символа
ADMIN_PASSWORD = "test-admin-pass123" # 12+ символов
SESSION_SECRET = "test-session-secret-0123456789ab" # 32 символа
@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("SESSION_SECRET", SESSION_SECRET)
monkeypatch.setenv("API_TOKEN", API_TOKEN)
monkeypatch.setenv("S3_BUCKET", "test-bucket")
monkeypatch.setenv("S3_ACCESS_KEY", "") # без ключей S3: сверка бакета при старте отключена
monkeypatch.setenv("POLL_INTERVAL", "0") # фоновый опрос в тестах выключен
monkeypatch.setenv("ADMIN_USER", "admin") # не зависеть от реального .env
monkeypatch.setenv("ADMIN_PASSWORD", ADMIN_PASSWORD)
get_settings.cache_clear()
security.reset_all_failures() # блокировки входа/очистки журнала — в памяти процесса, по всем ключам
backups.invalidate() # кэш списка бакета — модульное состояние, не должен переживать тест
db.init_db()
yield
get_settings.cache_clear()