From dfb6ed24ba4a5d3b6d8e7c4d1ac50538e599fdd4 Mon Sep 17 00:00:00 2001 From: Yujong Lee Date: Sun, 30 Aug 2026 17:54:32 -0700 Subject: [PATCH] test(rag): reject unsupported ingest providers --- .../proxy/rag_endpoints/test_rag_endpoints.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/test_litellm/proxy/rag_endpoints/test_rag_endpoints.py b/tests/test_litellm/proxy/rag_endpoints/test_rag_endpoints.py index abbf6892a98..14473fecf00 100644 --- a/tests/test_litellm/proxy/rag_endpoints/test_rag_endpoints.py +++ b/tests/test_litellm/proxy/rag_endpoints/test_rag_endpoints.py @@ -6,6 +6,7 @@ Covers: """ import io +from typing import Final from unittest.mock import AsyncMock, MagicMock, patch import pytest @@ -47,6 +48,35 @@ def client_internal_user(): app.dependency_overrides = original_overrides +def test_rag_ingest_rejects_unsupported_provider_before_execution( + client_internal_user: TestClient, +) -> None: + with ( + patch( + "litellm.proxy.rag_endpoints.endpoints.litellm.aingest", + new_callable=AsyncMock, + return_value={"status": "completed", "vector_store_id": "vs_unexpected"}, + ) as mock_aingest, + patch("litellm.proxy.proxy_server.prisma_client", None), + ): + response: Final = client_internal_user.post( + "/v1/rag/ingest", + json={ + "file_id": "file-test", + "ingest_options": {"vector_store": {"custom_llm_provider": "milvus"}}, + }, + ) + + assert response.status_code == 400 + assert response.json() == { + "detail": { + "error": "Provider 'milvus' is not supported for RAG ingestion. " + "Supported providers: openai, bedrock, gemini, s3_vectors, vertex_ai" + } + } + mock_aingest.assert_not_awaited() + + def test_internal_user_viewer_rag_ingest_without_vector_store_id_rejected( client_internal_user_viewer, ):