fix: return 400 instead of 502 for invalid search filters (#5482)

This commit is contained in:
Hrushikesh Yadav
2026-06-12 19:35:24 +05:30
committed by GitHub
parent b9ad8fa8b2
commit ced852033b
2 changed files with 23 additions and 0 deletions
+4
View File
@@ -451,6 +451,10 @@ def search_memories(search_req: SearchRequest, _auth=Depends(verify_auth)):
if search_req.explain is not None:
params["explain"] = search_req.explain
return get_memory_instance().search(query=search_req.query, filters=filters, **params)
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
except HTTPException:
raise
except Exception:
raise upstream_error()
+19
View File
@@ -682,3 +682,22 @@ class TestSearchEntityIdMapping:
_, kwargs = mock_memory.search.call_args
assert kwargs["filters"]["user_id"] == "u1"
assert kwargs["filters"]["category"] == "food"
class TestSearchValidationErrors:
"""Verify that ValueError from Memory.search() returns 400, not 502."""
def test_empty_filters_returns_400(self, client, mock_memory):
mock_memory.search.side_effect = ValueError(
"filters must contain at least one of: user_id, agent_id, run_id"
)
resp = client.post("/search", json={"query": "food", "filters": {}})
assert resp.status_code == 400
assert "filters must contain" in resp.json()["detail"]
def test_no_identifiers_returns_400(self, client, mock_memory):
mock_memory.search.side_effect = ValueError(
"filters must contain at least one of: user_id, agent_id, run_id"
)
resp = client.post("/search", json={"query": "food"})
assert resp.status_code == 400