mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-03 02:22:24 +00:00
Co-authored-by: yuneng <yuneng@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
from unittest.mock import MagicMock
|
|
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
|
|
import litellm
|
|
from litellm.proxy import proxy_server
|
|
from litellm.proxy._types import LitellmUserRoles, UserAPIKeyAuth
|
|
from litellm.proxy.auth.user_api_key_auth import user_api_key_auth
|
|
from litellm.proxy.proxy_server import app
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
@pytest.fixture
|
|
def authenticated_client(monkeypatch):
|
|
app.dependency_overrides[user_api_key_auth] = lambda: UserAPIKeyAuth(
|
|
user_role=LitellmUserRoles.PROXY_ADMIN, api_key="sk-1234"
|
|
)
|
|
monkeypatch.setattr(
|
|
litellm,
|
|
"model_cost",
|
|
{
|
|
"sunset-model": {
|
|
"deprecation_date": "2020-01-01",
|
|
"litellm_provider": "openai",
|
|
},
|
|
"future-model": {
|
|
"deprecation_date": "2099-01-01",
|
|
"litellm_provider": "openai",
|
|
},
|
|
},
|
|
)
|
|
router = MagicMock()
|
|
router.get_model_list.return_value = [
|
|
{
|
|
"model_name": "sunset-alias",
|
|
"litellm_params": {"model": "sunset-model"},
|
|
"model_info": {"id": "1"},
|
|
},
|
|
{
|
|
"model_name": "future-alias",
|
|
"litellm_params": {"model": "future-model"},
|
|
"model_info": {"id": "2"},
|
|
},
|
|
]
|
|
monkeypatch.setattr(proxy_server, "llm_router", router)
|
|
yield client
|
|
app.dependency_overrides.pop(user_api_key_auth, None)
|
|
|
|
|
|
def test_should_bucket_configured_models_by_urgency(authenticated_client):
|
|
response = authenticated_client.get("/model/deprecations")
|
|
|
|
assert response.status_code == 200
|
|
payload = response.json()
|
|
assert [m["model_name"] for m in payload["deprecated"]] == ["sunset-alias"]
|
|
assert [m["model_name"] for m in payload["upcoming"]] == ["future-alias"]
|
|
assert payload["imminent"] == []
|
|
assert payload["warn_within_days"] == 30
|
|
assert payload["deprecated"][0]["days_until_deprecation"] < 0
|
|
|
|
|
|
def test_should_rebucket_with_warn_within_days_override(authenticated_client):
|
|
response = authenticated_client.get(
|
|
"/v1/model/deprecations", params={"warn_within_days": 40000}
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
payload = response.json()
|
|
assert [m["model_name"] for m in payload["imminent"]] == ["future-alias"]
|
|
assert payload["upcoming"] == []
|
|
assert payload["warn_within_days"] == 40000
|