Spaces:
Configuration error
Configuration error
import json | |
from unittest.mock import MagicMock, patch | |
import pytest | |
import requests | |
from click.testing import CliRunner | |
from litellm.proxy.client.cli.main import cli | |
def mock_credentials_client(): | |
with patch( | |
"litellm.proxy.client.cli.commands.credentials.CredentialsManagementClient" | |
) as mock: | |
yield mock | |
def cli_runner(): | |
return CliRunner() | |
def test_list_credentials_table_format(cli_runner, mock_credentials_client): | |
# Mock response data | |
mock_response = { | |
"credentials": [ | |
{ | |
"credential_name": "test-cred-1", | |
"credential_info": {"custom_llm_provider": "azure"}, | |
}, | |
{ | |
"credential_name": "test-cred-2", | |
"credential_info": {"custom_llm_provider": "anthropic"}, | |
}, | |
] | |
} | |
mock_instance = mock_credentials_client.return_value | |
mock_instance.list.return_value = mock_response | |
# Run command | |
result = cli_runner.invoke(cli, ["credentials", "list"]) | |
# Verify | |
assert result.exit_code == 0 | |
assert "test-cred-1" in result.output | |
assert "azure" in result.output | |
assert "test-cred-2" in result.output | |
assert "anthropic" in result.output | |
def test_list_credentials_json_format(cli_runner, mock_credentials_client): | |
# Mock response data | |
mock_response = { | |
"credentials": [ | |
{ | |
"credential_name": "test-cred", | |
"credential_info": {"custom_llm_provider": "azure"}, | |
} | |
] | |
} | |
mock_instance = mock_credentials_client.return_value | |
mock_instance.list.return_value = mock_response | |
# Run command | |
result = cli_runner.invoke(cli, ["credentials", "list", "--format", "json"]) | |
# Verify | |
assert result.exit_code == 0 | |
output_data = json.loads(result.output) | |
assert output_data == mock_response | |
def test_create_credential_success(cli_runner, mock_credentials_client): | |
# Mock response data | |
mock_response = {"status": "success", "credential_name": "test-cred"} | |
mock_instance = mock_credentials_client.return_value | |
mock_instance.create.return_value = mock_response | |
# Run command | |
result = cli_runner.invoke( | |
cli, | |
[ | |
"credentials", | |
"create", | |
"test-cred", | |
"--info", | |
'{"custom_llm_provider": "azure"}', | |
"--values", | |
'{"api_key": "test-key"}', | |
], | |
) | |
# Verify | |
assert result.exit_code == 0 | |
output_data = json.loads(result.output) | |
assert output_data == mock_response | |
mock_instance.create.assert_called_once_with( | |
"test-cred", | |
{"custom_llm_provider": "azure"}, | |
{"api_key": "test-key"}, | |
) | |
def test_create_credential_invalid_json(cli_runner, mock_credentials_client): | |
# Run command with invalid JSON | |
result = cli_runner.invoke( | |
cli, | |
[ | |
"credentials", | |
"create", | |
"test-cred", | |
"--info", | |
"invalid-json", | |
"--values", | |
'{"api_key": "test-key"}', | |
], | |
) | |
# Verify | |
assert result.exit_code == 2 | |
assert "Invalid JSON" in result.output | |
mock_instance = mock_credentials_client.return_value | |
mock_instance.create.assert_not_called() | |
def test_create_credential_http_error(cli_runner, mock_credentials_client): | |
# Mock HTTP error | |
mock_instance = mock_credentials_client.return_value | |
mock_error_response = MagicMock() | |
mock_error_response.status_code = 400 | |
mock_error_response.json.return_value = {"error": "Invalid request"} | |
mock_instance.create.side_effect = requests.exceptions.HTTPError( | |
response=mock_error_response | |
) | |
# Run command | |
result = cli_runner.invoke( | |
cli, | |
[ | |
"credentials", | |
"create", | |
"test-cred", | |
"--info", | |
'{"custom_llm_provider": "azure"}', | |
"--values", | |
'{"api_key": "test-key"}', | |
], | |
) | |
# Verify | |
assert result.exit_code == 1 | |
assert "Error: HTTP 400" in result.output | |
assert "Invalid request" in result.output | |
def test_delete_credential_success(cli_runner, mock_credentials_client): | |
# Mock response data | |
mock_response = {"status": "success", "message": "Credential deleted"} | |
mock_instance = mock_credentials_client.return_value | |
mock_instance.delete.return_value = mock_response | |
# Run command | |
result = cli_runner.invoke(cli, ["credentials", "delete", "test-cred"]) | |
# Verify | |
assert result.exit_code == 0 | |
output_data = json.loads(result.output) | |
assert output_data == mock_response | |
mock_instance.delete.assert_called_once_with("test-cred") | |
def test_delete_credential_http_error(cli_runner, mock_credentials_client): | |
# Mock HTTP error | |
mock_instance = mock_credentials_client.return_value | |
mock_error_response = MagicMock() | |
mock_error_response.status_code = 404 | |
mock_error_response.json.return_value = {"error": "Credential not found"} | |
mock_instance.delete.side_effect = requests.exceptions.HTTPError( | |
response=mock_error_response | |
) | |
# Run command | |
result = cli_runner.invoke(cli, ["credentials", "delete", "test-cred"]) | |
# Verify | |
assert result.exit_code == 1 | |
assert "Error: HTTP 404" in result.output | |
assert "Credential not found" in result.output | |
def test_get_credential_success(cli_runner, mock_credentials_client): | |
# Mock response data | |
mock_response = { | |
"credential_name": "test-cred", | |
"credential_info": {"custom_llm_provider": "azure"}, | |
} | |
mock_instance = mock_credentials_client.return_value | |
mock_instance.get.return_value = mock_response | |
# Run command | |
result = cli_runner.invoke(cli, ["credentials", "get", "test-cred"]) | |
# Verify | |
assert result.exit_code == 0 | |
output_data = json.loads(result.output) | |
assert output_data == mock_response | |
mock_instance.get.assert_called_once_with("test-cred") | |