test_auth.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from httpx import AsyncClient
  2. from app.main import app
  3. from app.models import User
  4. from app.tests.conftest import default_user_email, default_user_password
  5. async def test_auth_access_token(client: AsyncClient, default_user: User):
  6. response = await client.post(
  7. app.url_path_for("login_access_token"),
  8. data={
  9. "username": default_user_email,
  10. "password": default_user_password,
  11. },
  12. headers={"Content-Type": "application/x-www-form-urlencoded"},
  13. )
  14. assert response.status_code == 200
  15. token = response.json()
  16. assert token["token_type"] == "Bearer"
  17. assert "access_token" in token
  18. assert "expires_at" in token
  19. assert "issued_at" in token
  20. assert "refresh_token" in token
  21. assert "refresh_token_expires_at" in token
  22. assert "refresh_token_issued_at" in token
  23. async def test_auth_access_token_fail_no_user(client: AsyncClient):
  24. response = await client.post(
  25. app.url_path_for("login_access_token"),
  26. data={
  27. "username": "xxx",
  28. "password": "yyy",
  29. },
  30. headers={"Content-Type": "application/x-www-form-urlencoded"},
  31. )
  32. assert response.status_code == 400
  33. assert response.json() == {"detail": "Incorrect email or password"}
  34. async def test_auth_refresh_token(client: AsyncClient, default_user: User):
  35. response = await client.post(
  36. app.url_path_for("login_access_token"),
  37. data={
  38. "username": default_user_email,
  39. "password": default_user_password,
  40. },
  41. headers={"Content-Type": "application/x-www-form-urlencoded"},
  42. )
  43. refresh_token = response.json()["refresh_token"]
  44. new_token_response = await client.post(
  45. app.url_path_for("refresh_token"), json={"refresh_token": refresh_token}
  46. )
  47. assert new_token_response.status_code == 200
  48. token = new_token_response.json()
  49. assert token["token_type"] == "Bearer"
  50. assert "access_token" in token
  51. assert "expires_at" in token
  52. assert "issued_at" in token
  53. assert "refresh_token" in token
  54. assert "refresh_token_expires_at" in token
  55. assert "refresh_token_issued_at" in token