remove /upload endpoint, switch tests to router
This commit is contained in:
parent
7d1ae0b561
commit
612a98f083
2 changed files with 46 additions and 19 deletions
12
src/main.py
12
src/main.py
|
|
@ -567,18 +567,6 @@ async def create_app():
|
||||||
|
|
||||||
# Create route handlers with service dependencies injected
|
# Create route handlers with service dependencies injected
|
||||||
routes = [
|
routes = [
|
||||||
# Upload endpoints
|
|
||||||
Route(
|
|
||||||
"/upload",
|
|
||||||
require_auth(services["session_manager"])(
|
|
||||||
partial(
|
|
||||||
upload.upload,
|
|
||||||
document_service=services["document_service"],
|
|
||||||
session_manager=services["session_manager"],
|
|
||||||
)
|
|
||||||
),
|
|
||||||
methods=["POST"],
|
|
||||||
),
|
|
||||||
# Langflow Files endpoints
|
# Langflow Files endpoints
|
||||||
Route(
|
Route(
|
||||||
"/langflow/files/upload",
|
"/langflow/files/upload",
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ async def test_upload_and_search_endpoint(tmp_path: Path, disable_langflow_inges
|
||||||
"text/markdown",
|
"text/markdown",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
upload_resp = await client.post("/upload", files=files)
|
upload_resp = await client.post("/router/upload_ingest", files=files)
|
||||||
body = upload_resp.json()
|
body = upload_resp.json()
|
||||||
assert upload_resp.status_code == 201, upload_resp.text
|
assert upload_resp.status_code == 201, upload_resp.text
|
||||||
assert body.get("status") in {"indexed", "unchanged"}
|
assert body.get("status") in {"indexed", "unchanged"}
|
||||||
|
|
@ -251,6 +251,35 @@ async def _wait_for_nudges(
|
||||||
raise AssertionError(f"{endpoint} never returned a usable response. Last payload: {last_payload}")
|
raise AssertionError(f"{endpoint} never returned a usable response. Last payload: {last_payload}")
|
||||||
|
|
||||||
|
|
||||||
|
async def _wait_for_task_completion(
|
||||||
|
client: httpx.AsyncClient, task_id: str, timeout_s: float = 180.0
|
||||||
|
) -> dict:
|
||||||
|
deadline = asyncio.get_event_loop().time() + timeout_s
|
||||||
|
last_payload = None
|
||||||
|
while asyncio.get_event_loop().time() < deadline:
|
||||||
|
resp = await client.get(f"/tasks/{task_id}")
|
||||||
|
if resp.status_code == 200:
|
||||||
|
try:
|
||||||
|
data = resp.json()
|
||||||
|
except Exception:
|
||||||
|
last_payload = resp.text
|
||||||
|
else:
|
||||||
|
status = (data.get("status") or "").lower()
|
||||||
|
if status == "completed":
|
||||||
|
return data
|
||||||
|
if status == "failed":
|
||||||
|
raise AssertionError(f"Task {task_id} failed: {data}")
|
||||||
|
last_payload = data
|
||||||
|
elif resp.status_code == 404:
|
||||||
|
last_payload = resp.text
|
||||||
|
else:
|
||||||
|
last_payload = resp.text
|
||||||
|
await asyncio.sleep(1.0)
|
||||||
|
raise AssertionError(
|
||||||
|
f"Task {task_id} did not complete in time. Last payload: {last_payload}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_langflow_chat_and_nudges_endpoints():
|
async def test_langflow_chat_and_nudges_endpoints():
|
||||||
"""Exercise /langflow and /nudges endpoints against a live Langflow backend."""
|
"""Exercise /langflow and /nudges endpoints against a live Langflow backend."""
|
||||||
|
|
@ -314,8 +343,10 @@ async def test_langflow_chat_and_nudges_endpoints():
|
||||||
async with httpx.AsyncClient(transport=transport, base_url="http://testserver") as client:
|
async with httpx.AsyncClient(transport=transport, base_url="http://testserver") as client:
|
||||||
await wait_for_service_ready(client)
|
await wait_for_service_ready(client)
|
||||||
|
|
||||||
warmup_file = Path("./nudges_seed.md")
|
warmup_file = tmp_path / "nudges_seed.md"
|
||||||
warmup_file.write_text("The user may care about different fruits including apples, hardy kiwi, and bananas")
|
warmup_file.write_text(
|
||||||
|
"The user may care about different fruits including apples, hardy kiwi, and bananas"
|
||||||
|
)
|
||||||
files = {
|
files = {
|
||||||
"file": (
|
"file": (
|
||||||
warmup_file.name,
|
warmup_file.name,
|
||||||
|
|
@ -323,8 +354,12 @@ async def test_langflow_chat_and_nudges_endpoints():
|
||||||
"text/plain",
|
"text/plain",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
upload_resp = await client.post("/upload", files=files)
|
upload_resp = await client.post("/router/upload_ingest", files=files)
|
||||||
assert upload_resp.status_code == 201, upload_resp.text
|
assert upload_resp.status_code in (201, 202), upload_resp.text
|
||||||
|
payload = upload_resp.json()
|
||||||
|
task_id = payload.get("task_id")
|
||||||
|
if task_id:
|
||||||
|
await _wait_for_task_completion(client, task_id)
|
||||||
|
|
||||||
prompt = "Respond with a brief acknowledgement for the OpenRAG integration test."
|
prompt = "Respond with a brief acknowledgement for the OpenRAG integration test."
|
||||||
langflow_payload = {"prompt": prompt, "limit": 5, "scoreThreshold": 0}
|
langflow_payload = {"prompt": prompt, "limit": 5, "scoreThreshold": 0}
|
||||||
|
|
@ -425,8 +460,12 @@ async def test_search_multi_embedding_models(
|
||||||
"text/markdown",
|
"text/markdown",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
resp = await client.post("/upload", files=files)
|
resp = await client.post("/router/upload_ingest", files=files)
|
||||||
assert resp.status_code == 201, resp.text
|
assert resp.status_code in (201, 202), resp.text
|
||||||
|
payload = resp.json()
|
||||||
|
task_id = payload.get("task_id")
|
||||||
|
if task_id:
|
||||||
|
await _wait_for_task_completion(client, task_id)
|
||||||
|
|
||||||
async def _wait_for_models(expected_models: set[str], query: str = "physics"):
|
async def _wait_for_models(expected_models: set[str], query: str = "physics"):
|
||||||
deadline = asyncio.get_event_loop().time() + 30.0
|
deadline = asyncio.get_event_loop().time() + 30.0
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue