Files
virtuality/tests/conftest.py
T
Claude 5cf0a6b640 Тесты и CI были добавлены
Каркас pytest с изоляцией путей в tmp: 40 тестов на валидаторы имён,
защиту от path traversal, парсеры virsh-вывода, cloud-init генерацию,
ротацию бэкапов, CSRF, rate-limit и рендеринг ключевых страниц.
GitHub Actions прогоняет compileall, bash -n всех скриптов и pytest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PKUoZwHMCHnytfswFVRUHw
2026-08-15 19:29:53 +00:00

39 строки
1.5 KiB
Python

import sys
from pathlib import Path
import pytest
WEB_DIR = Path(__file__).resolve().parent.parent / "web"
sys.path.insert(0, str(WEB_DIR))
@pytest.fixture(autouse=True)
def isolate_dirs(tmp_path, monkeypatch):
"""Уводим все записи на диск в tmp, чтобы тесты работали без root и не трогали систему."""
import app
import backup_core
import cloud_images
monkeypatch.setattr(app, "OPERATIONS_DIR", tmp_path / "ops")
monkeypatch.setattr(app, "ISO_DIR", tmp_path / "iso")
monkeypatch.setattr(app, "IMAGES_DIR", tmp_path / "images")
monkeypatch.setattr(app, "DISK_IMAGES_DIR", tmp_path / "disk-images")
monkeypatch.setattr(app, "VM_TEMPLATES_FILE", tmp_path / "config" / "vm_templates.json")
monkeypatch.setattr(backup_core, "BACKUPS_DIR", tmp_path / "backups")
monkeypatch.setattr(backup_core, "SCHEDULE_FILE", tmp_path / "config" / "backup_schedule.json")
monkeypatch.setattr(backup_core, "LOG_FILE", tmp_path / "log" / "backup.log")
monkeypatch.setattr(cloud_images, "CLOUD_IMAGES_DIR", tmp_path / "cloud-images")
yield
@pytest.fixture()
def auth_client():
"""TestClient с валидной сессией и CSRF-токеном."""
from fastapi.testclient import TestClient
import app
client = TestClient(app.app)
token = app.serializer.dumps({"user": app.AUTH_USER, "csrf": "test-csrf-token"})
client.cookies.set("virtuality_session", token)
return client