test_api_task62.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from fastapi.testclient import TestClient
  2. from main import app
  3. from database import get_db_connection
  4. import uuid
  5. client = TestClient(app)
  6. def run_tests():
  7. u1 = f"testu1_{uuid.uuid4().hex[:6]}"
  8. u2 = f"testu2_{uuid.uuid4().hex[:6]}"
  9. res1 = client.post("/api/register", json={"username": u1, "password": "password123"})
  10. t1 = res1.json().get("token")
  11. res2 = client.post("/api/register", json={"username": u2, "password": "password123"})
  12. t2 = res2.json().get("token")
  13. h1 = {"Authorization": f"Bearer {t1}"}
  14. h2 = {"Authorization": f"Bearer {t2}"}
  15. res = client.post("/api/meals", headers=h1, json={
  16. "name": "Test Meal",
  17. "items": [{"food_id": 1, "amount_g": 100}]
  18. })
  19. meal_id = res.json()["meal_id"]
  20. print(f"Created meal {meal_id}")
  21. # User 2 tries to rename
  22. res = client.put(f"/api/meals/{meal_id}", headers=h2, json={"name": "Hacked"})
  23. print(f"User 2 rename status: {res.status_code} (Expected 404)")
  24. # User 1 renames
  25. res = client.put(f"/api/meals/{meal_id}", headers=h1, json={"name": "Renamed"})
  26. print(f"User 1 rename status: {res.status_code} (Expected 200)")
  27. # User 2 tries to delete
  28. res = client.delete(f"/api/meals/{meal_id}", headers=h2)
  29. print(f"User 2 delete status: {res.status_code} (Expected 404)")
  30. # Delete
  31. res = client.delete(f"/api/meals/{meal_id}", headers=h1)
  32. print(f"User 1 delete status: {res.status_code} (Expected 200)")
  33. # Check DB
  34. conn = get_db_connection()
  35. c = conn.cursor()
  36. c.execute("SELECT COUNT(*) FROM meal_items WHERE meal_id = ?", (meal_id,))
  37. count = c.fetchone()[0]
  38. print(f"Remaining items in DB: {count} (Expected 0)")
  39. conn.close()
  40. if __name__ == "__main__":
  41. run_tests()