import os import secrets from datetime import datetime, timedelta os.environ["SECRET_KEY"] = secrets.token_hex(32) os.environ["ADMIN_PASSWORD"] = "TestPass123" from fastapi.testclient import TestClient # noqa: E402 from main import app # noqa: E402 from database import SessionLocal, Base, engine # noqa: E402 from models import User, Invitation # noqa: E402 from auth import hash_password, create_access_token # noqa: E402 ADMIN_PASSWORD = "TestPass123" def setup(): Base.metadata.drop_all(bind=engine) Base.metadata.create_all(bind=engine) db = SessionLocal() try: admin = User( username="admin", email="admin@cellar.local", hashed_password=hash_password(ADMIN_PASSWORD), is_admin=True, ) db.add(admin) db.commit() finally: db.close() setup() client = TestClient(app) def get_admin_token() -> str: db = SessionLocal() try: admin = db.query(User).filter(User.username == "admin").first() token = create_access_token({"sub": str(admin.id), "token_version": admin.token_version}) return token finally: db.close() def get_invite_token() -> str: db = SessionLocal() try: admin = db.query(User).filter(User.username == "admin").first() invite = Invitation( token=secrets.token_urlsafe(32), created_by=admin.id, expires_at=datetime.utcnow() + timedelta(days=7), ) db.add(invite) db.commit() db.refresh(invite) return invite.token finally: db.close()