Get started with user tests

This commit is contained in:
lvrossem
2023-04-09 13:39:52 -06:00
parent 101cd899c3
commit 8f3c303a2b
6 changed files with 162 additions and 39 deletions

View File

@@ -5,7 +5,8 @@ from fastapi import Depends, HTTPException
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from sqlalchemy.orm import Session
from src.crud.users import get_user_by_username, pwd_context
from src.crud.users import (check_empty_fields, get_user_by_username,
pwd_context)
from src.models import User
DEFAULT_NR_HIGH_SCORES = 10
@@ -48,12 +49,8 @@ def authenticate_user(db: Session, username: str, password: str):
def register(db: Session, username: str, password: str, avatar: str):
"""Register a new user"""
if len(avatar) == 0:
raise HTTPException(status_code=400, detail="No avatar was provided")
if len(username) == 0:
raise HTTPException(status_code=400, detail="No username was provided")
if len(password) == 0:
raise HTTPException(status_code=400, detail="No password was provided")
check_empty_fields(username, password, avatar)
db_user = get_user_by_username(db, username)
if db_user:
raise HTTPException(status_code=400, detail="Username already registered")

View File

@@ -8,14 +8,24 @@ from src.schemas.users import UserCreate
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def check_empty_fields(username: str, password: str, avatar: str):
"Checks if any user fields are empty"
if len(avatar) == 0:
raise HTTPException(status_code=400, detail="No avatar was provided")
if len(username) == 0:
raise HTTPException(status_code=400, detail="No username was provided")
if len(password) == 0:
raise HTTPException(status_code=400, detail="No password was provided")
def patch_user(db: Session, username: str, user: UserCreate):
"""Changes the username and/or the password of a User"""
check_empty_fields(user.username, user.password, user.avatar)
db_user = get_user_by_username(db, username)
potential_duplicate = get_user_by_username(db, user.username)
if potential_duplicate:
if potential_duplicate.user_id != db_user.user_id:
raise HTTPException(status_code=400, detail="Username already registered")
db_user.username = user.username
db_user.hashed_password = pwd_context.hash(user.password)
db_user.avatar = user.avatar

View File

@@ -24,11 +24,19 @@ async def root():
return {"message": "Hello world!"}
@app.get("/users", response_model=List[users.User])
@app.get("/allusers", response_model=List[users.User])
async def read_users(db: Session = Depends(get_db)):
return crud_users.get_users(db)
@app.get("/users", response_model=users.User)
async def read_user(
current_user_name: str = Depends(crud_authentication.get_current_user_name),
db: Session = Depends(get_db),
):
return crud_users.get_user_by_username(db, current_user_name)
@app.patch("/users")
async def patch_current_user(
user: users.UserCreate,