# ================================================================ # services/auth/tests/conftest.py # ================================================================ """Test configuration for auth service""" import pytest import asyncio from typing import AsyncGenerator from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine from sqlalchemy.orm import sessionmaker from fastapi.testclient import TestClient from app.main import app from app.core.database import get_db from shared.database.base import Base # Test database URL TEST_DATABASE_URL = "postgresql+asyncpg://test_user:test_pass@localhost:5433/test_auth_db" # Create test engine test_engine = create_async_engine(TEST_DATABASE_URL, echo=False) # Create test session TestSessionLocal = sessionmaker( test_engine, class_=AsyncSession, expire_on_commit=False ) @pytest.fixture(scope="session") def event_loop(): """Create an instance of the default event loop for the test session.""" loop = asyncio.get_event_loop_policy().new_event_loop() yield loop loop.close() @pytest.fixture async def db() -> AsyncGenerator[AsyncSession, None]: """Database fixture""" async with test_engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) async with TestSessionLocal() as session: yield session async with test_engine.begin() as conn: await conn.run_sync(Base.metadata.drop_all) @pytest.fixture def client(db: AsyncSession): """Test client fixture""" def override_get_db(): yield db app.dependency_overrides[get_db] = override_get_db with TestClient(app) as test_client: yield test_client app.dependency_overrides.clear() @pytest.fixture def test_user_data(): """Test user data fixture""" return { "email": "test@bakery.es", "password": "TestPass123", "full_name": "Test User", "phone": "+34123456789", "language": "es" }