| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- from fastapi.testclient import TestClient
- from main import app
- from database import get_db_connection
- import uuid
- client = TestClient(app)
- def run_tests():
- u1 = f"testu1_{uuid.uuid4().hex[:6]}"
- u2 = f"testu2_{uuid.uuid4().hex[:6]}"
-
- res1 = client.post("/api/register", json={"username": u1, "password": "password123"})
- t1 = res1.json().get("token")
-
- res2 = client.post("/api/register", json={"username": u2, "password": "password123"})
- t2 = res2.json().get("token")
-
- h1 = {"Authorization": f"Bearer {t1}"}
- h2 = {"Authorization": f"Bearer {t2}"}
-
- res = client.post("/api/meals", headers=h1, json={
- "name": "Test Meal",
- "items": [{"food_id": 1, "amount_g": 100}]
- })
-
- meal_id = res.json()["meal_id"]
- print(f"Created meal {meal_id}")
-
- # User 2 tries to rename
- res = client.put(f"/api/meals/{meal_id}", headers=h2, json={"name": "Hacked"})
- print(f"User 2 rename status: {res.status_code} (Expected 404)")
-
- # User 1 renames
- res = client.put(f"/api/meals/{meal_id}", headers=h1, json={"name": "Renamed"})
- print(f"User 1 rename status: {res.status_code} (Expected 200)")
-
- # User 2 tries to delete
- res = client.delete(f"/api/meals/{meal_id}", headers=h2)
- print(f"User 2 delete status: {res.status_code} (Expected 404)")
-
- # Delete
- res = client.delete(f"/api/meals/{meal_id}", headers=h1)
- print(f"User 1 delete status: {res.status_code} (Expected 200)")
-
- # Check DB
- conn = get_db_connection()
- c = conn.cursor()
- c.execute("SELECT COUNT(*) FROM meal_items WHERE meal_id = ?", (meal_id,))
- count = c.fetchone()[0]
- print(f"Remaining items in DB: {count} (Expected 0)")
- conn.close()
- if __name__ == "__main__":
- run_tests()
|