Spaces:
Paused
Paused
| from unittest.mock import patch | |
| import pytest | |
| from click.testing import CliRunner | |
| from litellm.proxy.client.cli import cli | |
| def cli_runner(): | |
| return CliRunner() | |
| def mock_env(): | |
| with patch.dict( | |
| "os.environ", | |
| { | |
| "LITELLM_PROXY_URL": "http://localhost:4000", | |
| "LITELLM_PROXY_API_KEY": "sk-test", | |
| }, | |
| ): | |
| yield | |
| def mock_users_client(): | |
| with patch( | |
| "litellm.proxy.client.cli.commands.users.UsersManagementClient" | |
| ) as MockClient: | |
| yield MockClient | |
| def test_users_list(cli_runner, mock_users_client): | |
| mock_users_client.return_value.list_users.return_value = [ | |
| { | |
| "user_id": "u1", | |
| "user_email": "a@b.com", | |
| "user_role": "internal_user", | |
| "teams": ["t1"], | |
| }, | |
| { | |
| "user_id": "u2", | |
| "user_email": "b@b.com", | |
| "user_role": "proxy_admin", | |
| "teams": ["t2", "t3"], | |
| }, | |
| ] | |
| result = cli_runner.invoke(cli, ["users", "list"]) | |
| assert result.exit_code == 0 | |
| assert "u1" in result.output | |
| assert "a@b.com" in result.output | |
| assert "proxy_admin" in result.output | |
| assert "t3" in result.output | |
| mock_users_client.return_value.list_users.assert_called_once() | |
| def test_users_get(cli_runner, mock_users_client): | |
| mock_users_client.return_value.get_user.return_value = { | |
| "user_id": "u1", | |
| "user_email": "a@b.com", | |
| } | |
| result = cli_runner.invoke(cli, ["users", "get", "--id", "u1"]) | |
| assert result.exit_code == 0 | |
| assert '"user_id": "u1"' in result.output | |
| assert '"user_email": "a@b.com"' in result.output | |
| mock_users_client.return_value.get_user.assert_called_once_with(user_id="u1") | |
| def test_users_create(cli_runner, mock_users_client): | |
| mock_users_client.return_value.create_user.return_value = { | |
| "user_id": "u1", | |
| "user_email": "a@b.com", | |
| } | |
| result = cli_runner.invoke( | |
| cli, ["users", "create", "--email", "a@b.com", "--role", "internal_user"] | |
| ) | |
| assert result.exit_code == 0 | |
| assert '"user_id": "u1"' in result.output | |
| assert '"user_email": "a@b.com"' in result.output | |
| mock_users_client.return_value.create_user.assert_called_once() | |
| def test_users_delete(cli_runner, mock_users_client): | |
| mock_users_client.return_value.delete_user.return_value = {"deleted": 1} | |
| result = cli_runner.invoke(cli, ["users", "delete", "u1", "u2"]) | |
| assert result.exit_code == 0 | |
| assert '"deleted": 1' in result.output | |
| mock_users_client.return_value.delete_user.assert_called_once_with(["u1", "u2"]) | |