test_user.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from app import crud
  2. from app.models import User, UserCreate, UserUpdate
  3. from app.tests.utils.utils import random_email, random_lower_string
  4. from app.utils.security import verify_password
  5. from sqlmodel import Session
  6. from fastapi.encoders import jsonable_encoder
  7. def test_create_user(db: Session) -> None:
  8. email = random_email()
  9. password = random_lower_string()
  10. user_in = UserCreate(email=email, password=password)
  11. user = crud.create_user(session=db, user_create=user_in)
  12. assert user.email == email
  13. assert hasattr(user, "hashed_password")
  14. def test_authenticate_user(db: Session) -> None:
  15. email = random_email()
  16. password = random_lower_string()
  17. user_in = UserCreate(email=email, password=password)
  18. user = crud.create_user(session=db, user_create=user_in)
  19. authenticated_user = crud.authenticate(session=db, email=email, password=password)
  20. assert authenticated_user
  21. assert user.email == authenticated_user.email
  22. def test_not_authenticate_user(db: Session) -> None:
  23. email = random_email()
  24. password = random_lower_string()
  25. user = crud.authenticate(session=db, email=email, password=password)
  26. assert user is None
  27. def test_check_if_user_is_active(db: Session) -> None:
  28. email = random_email()
  29. password = random_lower_string()
  30. user_in = UserCreate(email=email, password=password)
  31. user = crud.create_user(session=db, user_create=user_in)
  32. assert user.is_active is True
  33. def test_check_if_user_is_active_inactive(db: Session) -> None:
  34. email = random_email()
  35. password = random_lower_string()
  36. user_in = UserCreate(email=email, password=password, disabled=True)
  37. user = crud.create_user(session=db, user_create=user_in)
  38. assert user.is_active
  39. def test_check_if_user_is_superuser(db: Session) -> None:
  40. email = random_email()
  41. password = random_lower_string()
  42. user_in = UserCreate(email=email, password=password, is_superuser=True)
  43. user = crud.create_user(session=db, user_create=user_in)
  44. assert user.is_superuser is True
  45. def test_check_if_user_is_superuser_normal_user(db: Session) -> None:
  46. username = random_email()
  47. password = random_lower_string()
  48. user_in = UserCreate(email=username, password=password)
  49. user = crud.create_user(session=db, user_create=user_in)
  50. assert user.is_superuser is False
  51. def test_get_user(db: Session) -> None:
  52. password = random_lower_string()
  53. username = random_email()
  54. user_in = UserCreate(email=username, password=password, is_superuser=True)
  55. user = crud.create_user(session=db, user_create=user_in)
  56. user_2 = db.get(User, user.id)
  57. assert user_2
  58. assert user.email == user_2.email
  59. assert jsonable_encoder(user) == jsonable_encoder(user_2)
  60. def test_update_user(db: Session) -> None:
  61. password = random_lower_string()
  62. email = random_email()
  63. user_in = UserCreate(email=email, password=password, is_superuser=True)
  64. user = crud.create_user(session=db, user_create=user_in)
  65. new_password = random_lower_string()
  66. user_in_update = UserUpdate(password=new_password, is_superuser=True)
  67. if user.id is not None:
  68. crud.update_user(session=db, db_user=user, user_in=user_in_update)
  69. user_2 = db.get(User, user.id)
  70. assert user_2
  71. assert user.email == user_2.email
  72. assert verify_password(new_password, user_2.hashed_password)