mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-11 22:51:28 +00:00
test(proxy): consolidate team alias metadata coverage
This commit is contained in:
parent
e664500003
commit
e18d766f53
2 changed files with 87 additions and 94 deletions
|
|
@ -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",
|
||||
}
|
||||
]
|
||||
|
|
@ -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."""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue