Files
MAIA/backend/tests/helpers/generators.py
2025-04-16 21:32:57 +02:00

42 lines
1.4 KiB
Python

from datetime import timedelta
import uuid as uuid_pkg
from sqlalchemy.orm import Session
from core.config import settings
from modules.auth.models import User
from modules.auth.security import authenticate_user, create_access_token, create_refresh_token, hash_password
from modules.auth.schemas import UserRole
from tests.conftest import fake
def create_user(db: Session, is_admin: bool = False) -> User:
unhashed_password = fake.password()
_user = User(
name=fake.name(),
username=fake.user_name(),
hashed_password=hash_password(unhashed_password),
uuid=uuid_pkg.uuid4(),
role=UserRole.ADMIN if is_admin else UserRole.USER,
)
db.add(_user)
db.commit()
db.refresh(_user)
return _user, unhashed_password # return for testing
def login(db: Session, username: str, password: str) -> str:
user = authenticate_user(username, password, db)
if not user:
raise Exception("Incorrect username or password")
access_token = create_access_token(data={"sub": user.username}, expires_delta=timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES))
refresh_token = create_refresh_token(data={"sub": user.username})
max_age = settings.REFRESH_TOKEN_EXPIRE_DAYS * 24 * 60 * 60
return {
"access_token": access_token,
"refresh_token": refresh_token,
"max_age": max_age,
}