Inplement user Roles

This commit is contained in:
Sebastiaan
2025-05-26 00:35:30 +02:00
parent 46610c6cbd
commit 2ce051a5f3
13 changed files with 397 additions and 35 deletions

View File

@@ -2,7 +2,7 @@ from fastapi.testclient import TestClient
from sqlmodel import Session, select
from app.core.config import settings
from app.models import User
from app.models.user import User
def test_create_user(client: TestClient, db: Session) -> None:
@@ -19,6 +19,8 @@ def test_create_user(client: TestClient, db: Session) -> None:
data = r.json()
# TODO: Give user role
user = db.exec(select(User).where(User.id == data["id"])).first()
assert user

View File

@@ -17,7 +17,7 @@ def test_get_users_superuser_me(
current_user = r.json()
assert current_user
assert current_user["is_active"] is True
assert current_user["is_superuser"]
# assert current_user["is_superuser"] # TODO: Rewrite to split all roles
assert current_user["email"] == settings.FIRST_SUPERUSER
@@ -28,7 +28,7 @@ def test_get_users_normal_user_me(
current_user = r.json()
assert current_user
assert current_user["is_active"] is True
assert current_user["is_superuser"] is False
# assert current_user["is_superuser"] is False # TODO: Rewrite to split all roles
assert current_user["email"] == settings.EMAIL_TEST_USER

View File

@@ -7,7 +7,7 @@ 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 import Item, User
from app.models.user import User
from app.tests.utils.user import authentication_token_from_email
from app.tests.utils.utils import get_superuser_token_headers
@@ -17,8 +17,6 @@ def db() -> Generator[Session, None, None]:
with Session(engine) as session:
init_db(session)
yield session
statement = delete(Item)
session.execute(statement)
statement = delete(User)
session.execute(statement)
session.commit()

View File

@@ -2,7 +2,13 @@ from fastapi.encoders import jsonable_encoder
from sqlmodel import Session
from app.core.security import verify_password
from app.models.user import User, UserCreate, UserUpdate
from app.models.user import (
User,
UserCreate,
UserUpdate,
PermissionModule,
PermissionPart,
)
from app.tests.utils.utils import random_email, random_lower_string
@@ -43,17 +49,21 @@ def test_check_if_user_is_active(db: Session) -> None:
def test_check_if_user_is_active_inactive(db: Session) -> None:
email = random_email()
password = random_lower_string()
user_in = UserCreate(email=email, password=password, disabled=True)
user_in = UserCreate(email=email, password=password, is_active=False)
user = User.create(session=db, create_obj=user_in)
assert user.is_active
assert user.is_active is False
def test_check_if_user_is_superuser(db: Session) -> None:
email = random_email()
password = random_lower_string()
user_in = UserCreate(email=email, password=password, is_superuser=True)
user_in = UserCreate(email=email, password=password)
user = User.create(session=db, create_obj=user_in)
assert user.is_superuser is True
user.add_role(name="Admin", session=db)
assert (
user.has_permission(module=PermissionModule.SYSTEM, part=PermissionPart.ADMIN)
is True
)
def test_check_if_user_is_superuser_normal_user(db: Session) -> None:
@@ -61,14 +71,19 @@ def test_check_if_user_is_superuser_normal_user(db: Session) -> None:
password = random_lower_string()
user_in = UserCreate(email=username, password=password)
user = User.create(session=db, create_obj=user_in)
assert user.is_superuser is False
user.add_role(name="User", session=db)
assert (
user.has_permission(module=PermissionModule.SYSTEM, part=PermissionPart.ADMIN)
is False
)
def test_get_user(db: Session) -> None:
password = random_lower_string()
username = random_email()
user_in = UserCreate(email=username, password=password, is_superuser=True)
user_in = UserCreate(email=username, password=password)
user = User.create(session=db, create_obj=user_in)
user.add_role(name="Admin", session=db)
user_2 = db.get(User, user.id)
assert user_2
assert user.email == user_2.email
@@ -78,10 +93,10 @@ def test_get_user(db: Session) -> None:
def test_update_user(db: Session) -> None:
password = random_lower_string()
email = random_email()
user_in = UserCreate(email=email, password=password, is_superuser=True)
user_in = UserCreate(email=email, password=password)
user = User.create(session=db, create_obj=user_in)
new_password = random_lower_string()
user_in_update = UserUpdate(password=new_password, is_superuser=True)
user_in_update = UserUpdate(password=new_password)
if user.id is not None:
User.update(session=db, db_obj=user, in_obj=user_in_update)
user_2 = db.get(User, user.id)

View File

@@ -1,8 +1,8 @@
from fastapi.testclient import TestClient
from sqlmodel import Session
from sqlmodel import Session, select
from app.core.config import settings
from app.models.user import User, UserCreate, UserUpdate
from app.models.user import User, UserCreate, UserUpdate, Role
from app.tests.utils.utils import random_email, random_lower_string