test3 / tests /test_litellm /proxy /client /test_http_commands.py
DesertWolf's picture
Upload folder using huggingface_hub
447ebeb verified
"""Tests for the HTTP command group."""
import json
import pytest
import responses
from click.testing import CliRunner
from litellm.proxy.client.cli.commands.http import http
@pytest.fixture
def runner():
"""Create a CLI test runner."""
return CliRunner()
@responses.activate
def test_request_get(runner):
"""Test making a GET request."""
responses.add(
responses.GET,
"http://localhost:4000/models",
json={"models": []},
status=200,
)
result = runner.invoke(
http,
["request", "GET", "/models"],
obj={"base_url": "http://localhost:4000", "api_key": "sk-test-key"},
)
assert result.exit_code == 0
assert "models" in result.output
@responses.activate
def test_request_post_with_json(runner):
"""Test making a POST request with JSON data."""
responses.add(
responses.POST,
"http://localhost:4000/chat/completions",
json={"choices": [{"message": {"content": "Hello!"}}]},
status=200,
)
result = runner.invoke(
http,
[
"request",
"POST",
"/chat/completions",
"-j",
'{"model": "gpt-4", "messages": [{"role": "user", "content": "Hello"}]}',
],
obj={"base_url": "http://localhost:4000", "api_key": "sk-test-key"},
)
assert result.exit_code == 0
assert "choices" in result.output
@responses.activate
def test_request_with_headers(runner):
"""Test making a request with custom headers."""
responses.add(
responses.GET,
"http://localhost:4000/models",
json={"models": []},
status=200,
)
result = runner.invoke(
http,
[
"request",
"GET",
"/models",
"-H",
"X-Custom-Header:value",
"-H",
"Accept:application/json",
],
obj={"base_url": "http://localhost:4000", "api_key": "sk-test-key"},
)
assert result.exit_code == 0
assert "models" in result.output
def test_request_invalid_json(runner):
"""Test error handling for invalid JSON data."""
result = runner.invoke(
http,
[
"request",
"POST",
"/chat/completions",
"-j",
'{"invalid": json}', # Invalid JSON
],
obj={"base_url": "http://localhost:4000", "api_key": "sk-test-key"},
)
assert result.exit_code == 2 # Click error code for invalid parameter
assert "Invalid JSON format" in result.output
def test_request_invalid_header(runner):
"""Test error handling for invalid header format."""
result = runner.invoke(
http,
[
"request",
"GET",
"/models",
"-H",
"invalid-header", # Invalid header format
],
obj={"base_url": "http://localhost:4000", "api_key": "sk-test-key"},
)
assert result.exit_code == 2 # Click error code for invalid parameter
assert "Invalid header format" in result.output