conftest.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from collections.abc import Generator
  2. import pytest
  3. from app.core.config import settings
  4. from app.core.db import engine, init_db
  5. from app.main import app
  6. from app.models import Item, User
  7. from app.tests.utils.user import authentication_token_from_email
  8. from app.tests.utils.utils import get_superuser_token_headers
  9. from sqlmodel import Session, delete
  10. from fastapi.testclient import TestClient
  11. @pytest.fixture(scope="session", autouse=True)
  12. def db() -> Generator[Session, None, None]:
  13. with Session(engine) as session:
  14. init_db(session)
  15. yield session
  16. statement = delete(Item)
  17. session.execute(statement)
  18. statement = delete(User)
  19. session.execute(statement)
  20. session.commit()
  21. @pytest.fixture(scope="module")
  22. def client() -> Generator[TestClient, None, None]:
  23. with TestClient(app) as c:
  24. yield c
  25. @pytest.fixture(scope="module")
  26. def superuser_token_headers(client: TestClient) -> dict[str, str]:
  27. return get_superuser_token_headers(client)
  28. @pytest.fixture(scope="module")
  29. def normal_user_token_headers(client: TestClient, db: Session) -> dict[str, str]:
  30. return authentication_token_from_email(
  31. client=client, email=settings.EMAIL_TEST_USER, db=db
  32. )