diff --git a/tests/test_api.py b/tests/test_api.py new file mode 100644 index 0000000..1f6cfb2 --- /dev/null +++ b/tests/test_api.py @@ -0,0 +1,45 @@ +import pytest +import pytest_asyncio +from httpx import AsyncClient, ASGITransport +from uuid import uuid4 + +from geo_assistant.api.app import app +from geo_assistant.agent.graph import create_graph + + +@pytest_asyncio.fixture +async def initialized_app(): + """Initialize the app's chatbot before testing""" + # Manually initialize the chatbot as the lifespan would + app.state.chatbot = await create_graph() + yield app + # Cleanup if needed + if hasattr(app.state, "chatbot"): + del app.state.chatbot + + +@pytest.mark.asyncio +async def test_hello_world(initialized_app): + """Hello world test for the API""" + async with AsyncClient( + transport=ASGITransport(app=initialized_app), base_url="http://test" + ) as client: + thread_id = uuid4() + response = await client.post( + "/chat", + json={ + "agent_state_input": { + "messages": [{"content": "Hello, world!", "type": "human"}], + "place": None, + }, + "thread_id": str(thread_id), + }, + ) + + assert response.status_code == 200 + assert response.headers["content-type"] == "application/x-ndjson; charset=utf-8" + + # Read the streaming response + content = response.text + assert content is not None + assert len(content) > 0