60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
from collections.abc import Generator
|
|
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
from sqlmodel import Session, delete
|
|
|
|
from app.core.config import settings
|
|
from app.core.db import engine, init_db
|
|
from app.main import app
|
|
from app.models.event import Event
|
|
from app.models.user import User, PermissionRight
|
|
from app.tests.utils.event import create_random_event
|
|
from app.tests.utils.user import authentication_token_from_email, create_random_user
|
|
from app.tests.utils.utils import get_superuser_token_headers
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def db() -> Generator[Session, None, None]:
|
|
with Session(engine) as session:
|
|
init_db(session)
|
|
yield session
|
|
statement = delete(User)
|
|
session.execute(statement)
|
|
session.commit()
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def client() -> Generator[TestClient, None, None]:
|
|
with TestClient(app) as c:
|
|
yield c
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def superuser_token_headers(client: TestClient) -> dict[str, str]:
|
|
return get_superuser_token_headers(client)
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def normal_user_token_headers(client: TestClient, db: Session) -> dict[str, str]:
|
|
return authentication_token_from_email(
|
|
client=client, email=settings.EMAIL_TEST_USER, db=db
|
|
)
|
|
|
|
|
|
class EventUserHeader:
|
|
def __init__(self, user: User, event: Event, headers: dict[str, str]) -> None:
|
|
self.user = user
|
|
self.event = event
|
|
self.headers = headers
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def event_user_token_headers(client: TestClient, db: Session) -> EventUserHeader:
|
|
user = create_random_user(db)
|
|
event = create_random_event(db, name="Test event for user", contact=str(user.email))
|
|
event.add_user(user=user, rights=PermissionRight.ADMIN, session=db)
|
|
headers = authentication_token_from_email(client=client, email=str(user.email), db=db)
|
|
|
|
return EventUserHeader(user, event, headers)
|