File size: 3,052 Bytes
447ebeb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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(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(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


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


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