test(router): exercise wildcard deployment selection

This commit is contained in:
daleselaji-dev 2026-08-05 11:57:00 +08:00
parent be58ae730e
commit daf849c433
2 changed files with 14 additions and 24 deletions

View file

@ -4491,9 +4491,6 @@ class Router:
data: Final = deployment["litellm_params"].copy()
deployment_model_name: Final = data["model"]
# Wildcard deployments provide provider credentials but must keep
# the concrete model requested by the caller. Passing the wildcard
# through prevents model-cost lookups and Responses API bridging.
model_name = (
model
if "*" in deployment_model_name and "*" not in model

View file

@ -1,5 +1,4 @@
from unittest.mock import AsyncMock
from unittest.mock import patch
import pytest
@ -9,28 +8,22 @@ from litellm import Router
@pytest.mark.asyncio
async def test_wildcard_deployment_preserves_requested_model() -> None:
"""Provider wildcard credentials must not replace the concrete request model."""
router = Router(model_list=[])
deployment = {
"model_name": "openai/*",
"litellm_params": {"model": "openai/*", "api_key": "sk-test"},
"model_info": {"id": "wildcard-deployment"},
}
router = Router(
model_list=[
{
"model_name": "openai/*",
"litellm_params": {"model": "openai/*", "api_key": "sk-test"},
"model_info": {"id": "wildcard-deployment"},
}
]
)
original_function = AsyncMock(return_value="response")
with (
patch.object(
router,
"async_get_available_deployment",
new=AsyncMock(return_value=deployment),
),
patch.object(router, "async_routing_strategy_pre_call_checks", new=AsyncMock()),
patch.object(router, "_get_client", return_value=None),
):
result = await router._ageneric_api_call_with_fallbacks_helper(
model="openai/gpt-5.3-codex",
original_generic_function=original_function,
messages=[{"role": "user", "content": "ping"}],
)
result = await router._ageneric_api_call_with_fallbacks_helper(
model="openai/gpt-5.3-codex",
original_generic_function=original_function,
messages=[{"role": "user", "content": "ping"}],
)
assert result == "response"
assert original_function.await_args.kwargs["model"] == "openai/gpt-5.3-codex"