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()