mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-02 02:11:58 +00:00
* test(proxy): move auth, hooks, policy_engine and client tests into tests/unit/proxy Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(proxy): stub HIBP through respx by disabling the aiohttp transport Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(proxy): share the httpx transport fixture across proxy unit tests Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(proxy): restore proxy globals without a missing-value sentinel Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(proxy): package moved dirs and stub the login breach check at the HTTP boundary Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(proxy): isolate the mcp server manager per test Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: yuneng <yuneng@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
109 lines
3.4 KiB
Python
109 lines
3.4 KiB
Python
|
|
import pytest
|
|
|
|
|
|
from litellm.proxy.client import ChatClient, Client, ModelsManagementClient
|
|
from litellm.proxy.client.http_client import HTTPClient
|
|
from litellm.proxy.client.keys import KeysManagementClient
|
|
|
|
|
|
@pytest.fixture
|
|
def base_url():
|
|
return "http://localhost:8000"
|
|
|
|
|
|
@pytest.fixture
|
|
def api_key():
|
|
return "test-api-key"
|
|
|
|
|
|
def test_client_initialization_wires_resource_clients(base_url, api_key):
|
|
"""Test that the Client is properly initialized with all resource clients"""
|
|
client = Client(base_url=base_url, api_key=api_key)
|
|
|
|
# Check base properties
|
|
assert client._base_url == base_url
|
|
assert client._api_key == api_key
|
|
|
|
# Check resource clients
|
|
assert isinstance(client.models, ModelsManagementClient)
|
|
assert client.models._base_url == base_url
|
|
assert client.models._api_key == api_key
|
|
|
|
# Check chat client
|
|
assert isinstance(client.chat, ChatClient)
|
|
assert client.chat._base_url == base_url
|
|
assert client.chat._api_key == api_key
|
|
|
|
# Check keys client
|
|
assert isinstance(client.keys, KeysManagementClient)
|
|
assert client.keys._base_url == base_url
|
|
assert client.keys._api_key == api_key
|
|
|
|
# Check http client
|
|
assert isinstance(client.http, HTTPClient)
|
|
assert client.http._base_url == base_url
|
|
assert client.http._api_key == api_key
|
|
|
|
|
|
def test_client_initialization_strips_trailing_slash():
|
|
"""Test that the client properly strips trailing slashes from base_url during initialization"""
|
|
base_url = "http://localhost:8000/////"
|
|
client = Client(base_url=base_url)
|
|
|
|
assert client._base_url == "http://localhost:8000"
|
|
assert client.models._base_url == "http://localhost:8000"
|
|
assert client.chat._base_url == "http://localhost:8000"
|
|
assert client.keys._base_url == "http://localhost:8000"
|
|
assert client.http._base_url == "http://localhost:8000"
|
|
|
|
|
|
def test_client_without_api_key_propagates_none_to_resource_clients(base_url):
|
|
"""Test that the client works without an API key"""
|
|
client = Client(base_url=base_url)
|
|
|
|
assert client._api_key is None
|
|
assert client.models._api_key is None
|
|
assert client.chat._api_key is None
|
|
assert client.keys._api_key is None
|
|
assert client.http._api_key is None
|
|
|
|
|
|
def test_client_initialization():
|
|
"""Test that the client is initialized correctly."""
|
|
client = Client(
|
|
base_url="http://localhost:4000",
|
|
api_key="test-key",
|
|
timeout=60,
|
|
)
|
|
|
|
# Check that http client is initialized correctly
|
|
assert isinstance(client.http, HTTPClient)
|
|
assert client.http._base_url == "http://localhost:4000"
|
|
assert client.http._api_key == "test-key"
|
|
assert client.http._timeout == 60
|
|
assert client.teams._timeout == 60
|
|
assert client.keys._timeout == 60
|
|
assert client.credentials._timeout == 60
|
|
assert client.models._timeout == 60
|
|
assert client.model_groups._timeout == 60
|
|
assert client.chat._timeout == 600
|
|
|
|
|
|
def test_client_default_timeout():
|
|
"""Test that the client uses default timeout."""
|
|
client = Client(
|
|
base_url="http://localhost:4000",
|
|
api_key="test-key",
|
|
)
|
|
|
|
assert client.http._timeout == 30
|
|
assert client.keys._timeout == 30
|
|
assert client.chat._timeout == 600
|
|
|
|
|
|
def test_client_without_api_key():
|
|
"""Test that the client works without an API key."""
|
|
client = Client(base_url="http://localhost:4000")
|
|
|
|
assert client.http._api_key is None
|