Files
apipilot/tests/test_http_endpoints.py
2026-09-24 05:19:06 -04:00

53 lines
1.4 KiB
Python

from __future__ import annotations
import pytest
from fastapi.testclient import TestClient
from .conftest import build_sample_app
@pytest.fixture
def client():
app, _ = build_sample_app(expose_http_endpoints=True, add_composite=True)
return TestClient(app)
def test_http_list_tools(client):
res = client.get("/apipilot/tools")
assert res.status_code == 200
names = {t["name"] for t in res.json()}
assert "list_items" in names
assert "get_item" in names
assert "create_item" in names
assert "find_cheapest_item" in names
def test_http_execute_success(client):
res = client.post(
"/apipilot/execute",
json={"name": "list_items", "arguments": {"category": "active"}},
)
assert res.status_code == 200
body = res.json()
assert body["success"] is True
assert body["data"]["total"] == 2
def test_http_execute_tool_not_found_via_unknown_tool(client):
res = client.post(
"/apipilot/execute",
json={"name": "does_not_exist", "arguments": {}},
)
assert res.status_code == 500
def test_http_execute_invalid_args(client):
res = client.post(
"/apipilot/execute",
json={"name": "get_item", "arguments": {"item_id": "not-a-number"}},
)
assert res.status_code == 422
body = res.json()
assert body["success"] is False
assert body["error"]["code"] == "INVALID_ARGUMENTS"