65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
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()
|