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

1from fastapi.encoders import jsonable_encoder 

2from sqlmodel import Session 

3 

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 

8 

9 

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") 

17 

18 

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 

27 

28 

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 

34 

35 

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 

42 

43 

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 

50 

51 

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 

58 

59 

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 

66 

67 

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) 

77 

78 

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)