import pytest @pytest.mark.anyio async def test_health_check(client): response = await client.get("/api/health") assert response.status_code == 200 # Allow extra fields, just check status assert response.json().get("status") == "ok" @pytest.mark.anyio async def test_register_flow(client): # Minimal required fields for UserCreate user_data = { "email": "test@example.com", "password": "strongPassword123!", "role": "parent" # Specific to our schema } response = await client.post("/api/auth/register", json=user_data) if response.status_code not in [201, 400]: print(f"Registration failed: {response.json()}") # 201 Created or 400 Bad Request (if exists) assert response.status_code in [201, 400] @pytest.mark.anyio async def test_login_flow(client, anyio_backend): login_data = { "username": "test@example.com", "password": "strongPassword123!" } # Correct path for fastapi-users JWT strategy response = await client.post("/api/auth/jwt/login", data=login_data) if response.status_code == 200: assert "access_token" in response.json() else: # 400/401 acceptable if user creation failed or db issue assert response.status_code in [400, 401]