Files
codexpi/tests/conftest.py

52 lines
1.5 KiB
Python
Raw Normal View History

2026-11-14 20:23:59 +01:00
from __future__ import annotations
import sys
from pathlib import Path
import pytest
from fastapi.testclient import TestClient
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "backend"))
from codexpi.config import Settings
from codexpi.main import create_app
@pytest.fixture
def app_env(tmp_path: Path):
projects = tmp_path / "projects"
projects.mkdir()
forbidden = projects / "forbidden"
forbidden.mkdir()
data = tmp_path / "data"
data.mkdir()
settings = Settings(
base_dir=ROOT,
data_dir=data,
database_path=data / "test.db",
host="127.0.0.1",
port=8765,
cookie_name="codexpi_test",
cookie_secure=False,
session_hours=1,
allowed_roots=(projects,),
forbidden_roots=(forbidden,),
codex_bin="definitely-missing-codex",
frontend_dist=tmp_path / "missing-dist",
trusted_origins=("http://testserver",),
)
app = create_app(settings)
with TestClient(app) as client:
app.state.auth.create_user("admin", "a-very-long-test-password")
yield client, app, projects, forbidden
@pytest.fixture
def logged_in(app_env):
client, app, projects, forbidden = app_env
response = client.post("/api/auth/login", json={"username": "admin", "password": "a-very-long-test-password"})
assert response.status_code == 200
csrf = response.json()["csrf_token"]
return client, app, projects, forbidden, {"X-CSRF-Token": csrf}