import os os.environ.setdefault("APP_BASE_URL", "http://testserver") os.environ.setdefault("APP_SECRET_KEY", "test-secret") os.environ.setdefault("TOKEN_ENCRYPTION_KEY", "y-KaYJS2O-CziGFYfjtMObHX73xMI9FwFipMnFpHKAY=") os.environ.setdefault("DATABASE_URL", "postgresql+psycopg://test:test@localhost/test") os.environ.setdefault("ALLOWED_GOOGLE_EMAIL", "owner@example.com") import pytest from sqlalchemy import create_engine, event from sqlalchemy.orm import sessionmaker from sqlalchemy.pool import StaticPool from app.db import Base from app import models # noqa: F401 @pytest.fixture def db_session(): engine = create_engine( "sqlite:///:memory:", connect_args={"check_same_thread": False}, poolclass=StaticPool, ) @event.listens_for(engine, "connect") def _enable_sqlite_fk(dbapi_connection, _): cursor = dbapi_connection.cursor() cursor.execute("PRAGMA foreign_keys=ON") cursor.close() Base.metadata.create_all(engine) session_factory = sessionmaker(bind=engine, autoflush=False, autocommit=False) session = session_factory() try: yield session finally: session.close() engine.dispose()