Coverage for app/tests/crud/test_user.py: 100%
72 statements
« prev ^ index » next coverage.py v7.6.1, created at 2026-03-24 11:40 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2026-03-24 11:40 +0000
1from fastapi.encoders import jsonable_encoder
2from sqlmodel import Session
4from app import crud
5from app.core.security import verify_password
6from app.models import User, UserCreate, UserUpdate
7from app.tests.utils.utils import random_email, random_lower_string
10def test_create_user(db: Session) -> None:
11 email = random_email()
12 password = random_lower_string()
13 user_in = UserCreate(email=email, password=password)
14 user = crud.create_user(session=db, user_create=user_in)
15 assert user.email == email
16 assert hasattr(user, "hashed_password")
19def test_authenticate_user(db: Session) -> None:
20 email = random_email()
21 password = random_lower_string()
22 user_in = UserCreate(email=email, password=password)
23 user = crud.create_user(session=db, user_create=user_in)
24 authenticated_user = crud.authenticate(session=db, email=email, password=password)
25 assert authenticated_user
26 assert user.email == authenticated_user.email
29def test_not_authenticate_user(db: Session) -> None:
30 email = random_email()
31 password = random_lower_string()
32 user = crud.authenticate(session=db, email=email, password=password)
33 assert user is None
36def test_check_if_user_is_active(db: Session) -> None:
37 email = random_email()
38 password = random_lower_string()
39 user_in = UserCreate(email=email, password=password)
40 user = crud.create_user(session=db, user_create=user_in)
41 assert user.is_active is True
44def test_check_if_user_is_active_inactive(db: Session) -> None:
45 email = random_email()
46 password = random_lower_string()
47 user_in = UserCreate(email=email, password=password, disabled=True)
48 user = crud.create_user(session=db, user_create=user_in)
49 assert user.is_active
52def test_check_if_user_is_superuser(db: Session) -> None:
53 email = random_email()
54 password = random_lower_string()
55 user_in = UserCreate(email=email, password=password, is_superuser=True)
56 user = crud.create_user(session=db, user_create=user_in)
57 assert user.is_superuser is True
60def test_check_if_user_is_superuser_normal_user(db: Session) -> None:
61 username = random_email()
62 password = random_lower_string()
63 user_in = UserCreate(email=username, password=password)
64 user = crud.create_user(session=db, user_create=user_in)
65 assert user.is_superuser is False
68def test_get_user(db: Session) -> None:
69 password = random_lower_string()
70 username = random_email()
71 user_in = UserCreate(email=username, password=password, is_superuser=True)
72 user = crud.create_user(session=db, user_create=user_in)
73 user_2 = db.get(User, user.id)
74 assert user_2
75 assert user.email == user_2.email
76 assert jsonable_encoder(user) == jsonable_encoder(user_2)
79def test_update_user(db: Session) -> None:
80 password = random_lower_string()
81 email = random_email()
82 user_in = UserCreate(email=email, password=password, is_superuser=True)
83 user = crud.create_user(session=db, user_create=user_in)
84 new_password = random_lower_string()
85 user_in_update = UserUpdate(password=new_password, is_superuser=True)
86 if user.id is not None:
87 crud.update_user(session=db, db_user=user, user_in=user_in_update)
88 user_2 = db.get(User, user.id)
89 assert user_2
90 assert user.email == user_2.email
91 assert verify_password(new_password, user_2.hashed_password)