Skip to main content
Glama
by cycodehq
test_configure_command.pyโ€ข8.1 kB
from typing import TYPE_CHECKING from typer.testing import CliRunner from cycode.cli.app import app if TYPE_CHECKING: from pytest_mock import MockerFixture def test_configure_command_no_exist_values_in_file(mocker: 'MockerFixture') -> None: # Arrange app_url_user_input = 'new app url' api_url_user_input = 'new api url' client_id_user_input = 'new client id' client_secret_user_input = 'new client secret' mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.get_credentials_from_file', return_value=(None, None), ) mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_api_url', return_value=None, ) mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_app_url', return_value=None, ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch( 'typer.prompt', side_effect=[api_url_user_input, app_url_user_input, client_id_user_input, client_secret_user_input], ) mocked_update_credentials = mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.update_credentials' ) mocked_update_api_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_api_base_url' ) mocked_update_app_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_app_base_url' ) # Act CliRunner().invoke(app, ['configure']) # Assert mocked_update_credentials.assert_called_once_with(client_id_user_input, client_secret_user_input) mocked_update_api_base_url.assert_called_once_with(api_url_user_input) mocked_update_app_base_url.assert_called_once_with(app_url_user_input) def test_configure_command_update_current_configs_in_files(mocker: 'MockerFixture') -> None: # Arrange app_url_user_input = 'new app url' api_url_user_input = 'new api url' client_id_user_input = 'new client id' client_secret_user_input = 'new client secret' mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.get_credentials_from_file', return_value=('client id file', 'client secret file'), ) mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_api_url', return_value='api url file', ) mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_app_url', return_value='app url file', ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch( 'typer.prompt', side_effect=[api_url_user_input, app_url_user_input, client_id_user_input, client_secret_user_input], ) mocked_update_credentials = mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.update_credentials' ) mocked_update_api_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_api_base_url' ) mocked_update_app_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_app_base_url' ) # Act CliRunner().invoke(app, ['configure']) # Assert mocked_update_credentials.assert_called_once_with(client_id_user_input, client_secret_user_input) mocked_update_api_base_url.assert_called_once_with(api_url_user_input) mocked_update_app_base_url.assert_called_once_with(app_url_user_input) def test_set_credentials_update_only_client_id(mocker: 'MockerFixture') -> None: # Arrange client_id_user_input = 'new client id' current_client_id = 'client secret file' mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.get_credentials_from_file', return_value=('client id file', 'client secret file'), ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch('typer.prompt', side_effect=['', '', client_id_user_input, '']) mocked_update_credentials = mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.update_credentials' ) # Act CliRunner().invoke(app, ['configure']) # Assert mocked_update_credentials.assert_called_once_with(client_id_user_input, current_client_id) def test_configure_command_update_only_client_secret(mocker: 'MockerFixture') -> None: # Arrange client_secret_user_input = 'new client secret' current_client_id = 'client secret file' mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.get_credentials_from_file', return_value=(current_client_id, 'client secret file'), ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch('typer.prompt', side_effect=['', '', '', client_secret_user_input]) mocked_update_credentials = mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.update_credentials' ) # Act CliRunner().invoke(app, ['configure']) # Assert mocked_update_credentials.assert_called_once_with(current_client_id, client_secret_user_input) def test_configure_command_update_only_api_url(mocker: 'MockerFixture') -> None: # Arrange api_url_user_input = 'new api url' current_api_url = 'api url' mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_api_url', return_value=current_api_url, ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch('typer.prompt', side_effect=[api_url_user_input, '', '', '']) mocked_update_api_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_api_base_url' ) # Act CliRunner().invoke(app, ['configure']) # Assert mocked_update_api_base_url.assert_called_once_with(api_url_user_input) def test_configure_command_should_not_update_credentials(mocker: 'MockerFixture') -> None: # Arrange client_id_user_input = '' client_secret_user_input = '' mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.get_credentials_from_file', return_value=('client id file', 'client secret file'), ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch('typer.prompt', side_effect=['', '', client_id_user_input, client_secret_user_input]) mocked_update_credentials = mocker.patch( 'cycode.cli.user_settings.credentials_manager.CredentialsManager.update_credentials' ) # Act CliRunner().invoke(app, ['configure']) # Assert assert not mocked_update_credentials.called def test_configure_command_should_not_update_config_file(mocker: 'MockerFixture') -> None: # Arrange app_url_user_input = '' api_url_user_input = '' mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_api_url', return_value='api url file', ) mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.get_app_url', return_value='app url file', ) # side effect - multiple return values, each item in the list represents return of a call mocker.patch('typer.prompt', side_effect=[api_url_user_input, app_url_user_input, '', '']) mocked_update_api_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_api_base_url' ) mocked_update_app_base_url = mocker.patch( 'cycode.cli.user_settings.config_file_manager.ConfigFileManager.update_app_base_url' ) # Act CliRunner().invoke(app, ['configure']) # Assert assert not mocked_update_api_base_url.called assert not mocked_update_app_base_url.called

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cycodehq/cycode-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server