test_users.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from httpx import AsyncClient
  2. from sqlalchemy import select
  3. from sqlalchemy.orm import Session
  4. from app.main import app
  5. from app.models import User
  6. from app.tests.conftest import (
  7. default_user_email,
  8. default_user_id,
  9. default_user_password_hash,
  10. )
  11. async def test_read_current_user(client: AsyncClient, default_user_headers):
  12. response = await client.get(app.url_path_for("read_current_user"), headers=default_user_headers)
  13. assert response.status_code == 200
  14. assert response.json() == {
  15. "id": default_user_id,
  16. "email": default_user_email,
  17. }
  18. async def test_delete_current_user(client: AsyncClient, default_user_headers, session: Session):
  19. response = await client.delete(
  20. app.url_path_for("delete_current_user"), headers=default_user_headers
  21. )
  22. assert response.status_code == 204
  23. result = session.execute(select(User).where(User.id == default_user_id))
  24. user = result.scalars().first()
  25. assert user is None
  26. async def test_reset_current_user_password(
  27. client: AsyncClient, default_user_headers, session: Session
  28. ):
  29. response = await client.post(
  30. app.url_path_for("reset_current_user_password"),
  31. headers=default_user_headers,
  32. json={"password": "testxxxxxx"},
  33. )
  34. assert response.status_code == 200
  35. result = session.execute(select(User).where(User.id == default_user_id))
  36. user = result.scalars().first()
  37. assert user is not None
  38. assert user.hashed_password != default_user_password_hash
  39. async def test_register_new_user(client: AsyncClient, default_user_headers, session: Session):
  40. response = await client.post(
  41. app.url_path_for("register_new_user"),
  42. headers=default_user_headers,
  43. json={
  44. "email": "qwe@example.com",
  45. "password": "asdasdasd",
  46. },
  47. )
  48. assert response.status_code == 200
  49. result = session.execute(select(User).where(User.email == "qwe@example.com"))
  50. user = result.scalars().first()
  51. assert user is not None