Inplement user Roles
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user