"""FlowDeck — Test fixtures.""" import pytest from fastapi.testclient import TestClient from app.main import app from app.db import init_db, get_conn from app.auth.session import SessionManager @pytest.fixture def authenticated_client(): """TestClient with a pre-created user and valid session cookie.""" import os import tempfile db_file = tempfile.NamedTemporaryFile(suffix=".db", delete=False) db_path = db_file.name db_file.close() os.environ["GITEA_URL"] = "https://git.dracodev.net" os.environ["GITEA_TOKEN"] = "test" os.environ["DATABASE_URL"] = f"sqlite:///{db_path}" os.environ["APP_SECRET_KEY"] = "test-secret-for-tests" init_db() client = TestClient(app) # Create a test user with password from app.password_utils import hash_password with get_conn() as conn: conn.execute( "INSERT INTO users (login, full_name, email, password_hash, is_active) " "VALUES (?, ?, ?, ?, 1)", ("testuser", "Test User", "test@test.com", hash_password("password")), ) conn.commit() # Generate a session for this user with get_conn() as conn: user = conn.execute("SELECT * FROM users WHERE login='testuser'").fetchone() session = SessionManager.create_session(dict(user)) client.cookies["flowdeck_session"] = session yield client os.unlink(db_path)