test(proxy): consolidate team alias metadata coverage

This commit is contained in:
Hayden Moulds 2026-09-10 17:37:32 +10:00
parent e664500003
commit e18d766f53
No known key found for this signature in database
2 changed files with 87 additions and 94 deletions

View file

@ -1,94 +0,0 @@
"""Regression coverage for metadata on public team model aliases."""
from unittest.mock import MagicMock
import pytest
import litellm.proxy.proxy_server as ps
from litellm.proxy._types import UserAPIKeyAuth
from litellm.types.router import DeploymentModelListingInfo
def _team_router(*, public_name: str, internal_name: str, underlying_model: str, listing_info):
deployment = {
"model_name": internal_name,
"litellm_params": {"model": underlying_model},
"model_info": {
"id": "deployment-id",
"team_id": "teamx",
"team_public_model_name": public_name,
"access_groups": ["team-access"],
},
}
router = MagicMock()
router.get_model_names.return_value = [internal_name]
router.get_model_access_groups.return_value = {"team-access": [internal_name]}
router.get_fully_blocked_model_names.return_value = set()
router.get_model_listing_info.return_value = listing_info
router.get_model_group_info.return_value = None
router.model_list = [deployment]
router.get_model_list.return_value = [deployment]
return router
@pytest.mark.asyncio
async def test_team_alias_inherits_deployment_token_limits_and_chat_mode(monkeypatch):
router = _team_router(
public_name="GPT Terra",
internal_name="model_name_teamx_terra_uuid",
underlying_model="azure/gpt-4.1",
listing_info=DeploymentModelListingInfo(
cost_map_keys=("azure/gpt-4.1",),
max_input_tokens=876000,
max_output_tokens=128000,
),
)
monkeypatch.setattr(ps, "llm_router", router)
monkeypatch.setattr(ps, "user_model", None)
monkeypatch.setattr(ps, "general_settings", {"use_team_public_model_name": True})
key = UserAPIKeyAuth(user_id="user", api_key="***", models=["team-access"], team_models=[])
response = await ps.model_list(user_api_key_dict=key, include_metadata=True)
assert response["data"] == [
{
"id": "GPT Terra",
"object": "model",
"created": 1677610602,
"owned_by": "openai",
"mode": "chat",
"max_input_tokens": 876000,
"max_output_tokens": 128000,
"metadata": {"fallbacks": []},
}
]
@pytest.mark.asyncio
async def test_team_image_alias_inherits_image_generation_mode(monkeypatch):
router = _team_router(
public_name="image",
internal_name="model_name_teamx_image_uuid",
underlying_model="openai/gpt-image-1",
listing_info=DeploymentModelListingInfo(
cost_map_keys=("openai/gpt-image-1",),
max_input_tokens=None,
max_output_tokens=None,
),
)
monkeypatch.setattr(ps, "llm_router", router)
monkeypatch.setattr(ps, "user_model", None)
monkeypatch.setattr(ps, "general_settings", {"use_team_public_model_name": True})
key = UserAPIKeyAuth(user_id="user", api_key="***", models=["team-access"], team_models=[])
response = await ps.model_list(user_api_key_dict=key)
assert response["data"] == [
{
"id": "image",
"object": "model",
"created": 1677610602,
"owned_by": "openai",
"mode": "image_generation",
}
]

View file

@ -1090,6 +1090,93 @@ async def test_v1_models_metadata_does_not_leak_other_team_fallbacks(monkeypatch
]
@pytest.mark.asyncio
async def test_v1_models_team_alias_inherits_token_limits_and_chat_mode(monkeypatch):
team_dep = {
"model_name": "model_name_teamX_terra_uuid",
"litellm_params": {"model": "azure/gpt-4.1"},
"model_info": {
"id": "id-terra",
"team_id": "teamX",
"team_public_model_name": "GPT Terra",
"access_groups": ["grp-a"],
"mode": "chat",
"max_input_tokens": 876000,
"max_output_tokens": 128000,
},
}
router = MagicMock()
router.get_model_names.return_value = ["model_name_teamX_terra_uuid"]
router.get_model_access_groups.return_value = {"grp-a": ["model_name_teamX_terra_uuid"]}
router.get_fully_blocked_model_names.return_value = set()
router.get_configured_token_limits.return_value = (876000, 128000)
router.get_configured_mode.return_value = "chat"
router.model_list = [team_dep]
router.get_model_list.return_value = [team_dep]
router.get_model_group_info.return_value = None
monkeypatch.setattr(ps, "llm_router", router)
monkeypatch.setattr(ps, "user_model", None)
monkeypatch.setattr(ps, "general_settings", {"use_team_public_model_name": True})
key = UserAPIKeyAuth(user_id="user", api_key="***", models=["grp-a"], team_models=[])
response = await ps.model_list(user_api_key_dict=key, include_metadata=True)
assert response["data"] == [
{
"id": "GPT Terra",
"object": "model",
"created": 1677610602,
"owned_by": "openai",
"mode": "chat",
"max_input_tokens": 876000,
"max_output_tokens": 128000,
"metadata": {"fallbacks": []},
}
]
@pytest.mark.asyncio
async def test_v1_models_team_image_alias_inherits_image_generation_mode(monkeypatch):
team_dep = {
"model_name": "model_name_teamX_image_uuid",
"litellm_params": {"model": "openai/gpt-image-1"},
"model_info": {
"id": "id-image",
"team_id": "teamX",
"team_public_model_name": "image",
"access_groups": ["grp-a"],
"mode": "image_generation",
},
}
router = MagicMock()
router.get_model_names.return_value = ["model_name_teamX_image_uuid"]
router.get_model_access_groups.return_value = {"grp-a": ["model_name_teamX_image_uuid"]}
router.get_fully_blocked_model_names.return_value = set()
router.get_configured_token_limits.return_value = (None, None)
router.get_configured_mode.return_value = "image_generation"
router.model_list = [team_dep]
router.get_model_list.return_value = [team_dep]
router.get_model_group_info.return_value = None
monkeypatch.setattr(ps, "llm_router", router)
monkeypatch.setattr(ps, "user_model", None)
monkeypatch.setattr(ps, "general_settings", {"use_team_public_model_name": True})
key = UserAPIKeyAuth(user_id="user", api_key="***", models=["grp-a"], team_models=[])
response = await ps.model_list(user_api_key_dict=key)
assert response["data"] == [
{
"id": "image",
"object": "model",
"created": 1677610602,
"owned_by": "openai",
"mode": "image_generation",
}
]
def test_translate_team_model_names_for_listing_swaps_and_dedupes():
"""Internal team routing keys -> public name; sibling deployments sharing a
public name collapse to one entry (order preserved); globals untouched."""