test_users.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from httpx import AsyncClient
  2. from sqlalchemy import select
  3. from sqlalchemy.ext.asyncio import AsyncSession
  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(
  13. app.url_path_for("read_current_user"), headers=default_user_headers
  14. )
  15. assert response.status_code == 200
  16. assert response.json() == {
  17. "id": default_user_id,
  18. "email": default_user_email,
  19. }
  20. async def test_delete_current_user(
  21. client: AsyncClient, default_user_headers, session: AsyncSession
  22. ):
  23. response = await client.delete(
  24. app.url_path_for("delete_current_user"), headers=default_user_headers
  25. )
  26. assert response.status_code == 204
  27. result = await session.execute(select(User).where(User.id == default_user_id))
  28. user = result.scalars().first()
  29. assert user is None
  30. async def test_reset_current_user_password(
  31. client: AsyncClient, default_user_headers, session: AsyncSession
  32. ):
  33. response = await client.post(
  34. app.url_path_for("reset_current_user_password"),
  35. headers=default_user_headers,
  36. json={"password": "testxxxxxx"},
  37. )
  38. assert response.status_code == 200
  39. result = await session.execute(select(User).where(User.id == default_user_id))
  40. user = result.scalars().first()
  41. assert user is not None
  42. assert user.hashed_password != default_user_password_hash
  43. async def test_register_new_user(
  44. client: AsyncClient, default_user_headers, session: AsyncSession
  45. ):
  46. response = await client.post(
  47. app.url_path_for("register_new_user"),
  48. headers=default_user_headers,
  49. json={
  50. "email": "qwe@example.com",
  51. "password": "asdasdasd",
  52. },
  53. )
  54. assert response.status_code == 200
  55. result = await session.execute(select(User).where(User.email == "qwe@example.com"))
  56. user = result.scalars().first()
  57. assert user is not None