From 5e8ceaee1cd37697d79466ef3724a0c7c5ddd7a0 Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 28 May 2018 00:19:06 -0700 Subject: [PATCH 1/3] hide the token from the console --- databricks_cli/configure/cli.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/databricks_cli/configure/cli.py b/databricks_cli/configure/cli.py index 4fa2049f..22c6e52b 100644 --- a/databricks_cli/configure/cli.py +++ b/databricks_cli/configure/cli.py @@ -38,8 +38,14 @@ def _configure_cli_token(profile): config = get_config_for_profile(profile) + if config.token: + default_token = '*' * len(config.token) + else: + default_token = None host = click.prompt(PROMPT_HOST, default=config.host, type=_DbfsHost()) - token = click.prompt(PROMPT_TOKEN, default=config.token) + token = click.prompt(PROMPT_TOKEN, default=default_token, hide_input=True) + if token == default_token: + token = config.token new_config = DatabricksConfig.from_token(host, token) update_and_persist_config(profile, new_config) From 9cbcfdfe99eb508ceb0fbb836d6b9502ed9b17cd Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 28 May 2018 00:21:05 -0700 Subject: [PATCH 2/3] add unit test --- tests/configure/test_cli.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/configure/test_cli.py b/tests/configure/test_cli.py index 22d561f3..7c8b4bef 100644 --- a/tests/configure/test_cli.py +++ b/tests/configure/test_cli.py @@ -56,6 +56,11 @@ def test_configure_cli_token(): assert get_config_for_profile(DEFAULT_SECTION).host == TEST_HOST assert get_config_for_profile(DEFAULT_SECTION).token == TEST_TOKEN + runner.invoke(cli.configure_cli, ['--token'], + input=(TEST_HOST + '\n' + '\n')) + assert get_config_for_profile(DEFAULT_SECTION).host == TEST_HOST + assert get_config_for_profile(DEFAULT_SECTION).token == TEST_TOKEN + def test_configure_two_sections(): runner = CliRunner() From 331eeb59d76f83349f63c6e80b47c892d3f94b5d Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Tue, 30 Jul 2019 18:35:33 -0700 Subject: [PATCH 3/3] fix tests --- databricks_cli/configure/provider.py | 2 ++ tests/configure/test_cli.py | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/databricks_cli/configure/provider.py b/databricks_cli/configure/provider.py index 24a7fa3b..dd865063 100644 --- a/databricks_cli/configure/provider.py +++ b/databricks_cli/configure/provider.py @@ -216,6 +216,8 @@ def get_config(self): class ProfileConfigProvider(DatabricksConfigProvider): """Loads from the databrickscfg file.""" def __init__(self, profile=DEFAULT_SECTION): + if profile is None: + profile = DEFAULT_SECTION self.profile = profile def get_config(self): diff --git a/tests/configure/test_cli.py b/tests/configure/test_cli.py index ef91a53b..64bf1832 100644 --- a/tests/configure/test_cli.py +++ b/tests/configure/test_cli.py @@ -26,7 +26,7 @@ from click.testing import CliRunner import databricks_cli.configure.cli as cli -from databricks_cli.configure.provider import get_config, ProfileConfigProvider +from databricks_cli.configure.provider import get_config, ProfileConfigProvider, get_config_for_profile, DEFAULT_SECTION TEST_HOST = 'https://test.cloud.databricks.com' TEST_USER = 'monkey@databricks.com' @@ -57,10 +57,12 @@ def test_configure_cli_token(): assert get_config().token == TEST_TOKEN assert get_config().insecure is None - runner.invoke(cli.configure_cli, ['--token'], - input=(TEST_HOST + '\n' + '\n')) - assert get_config_for_profile(DEFAULT_SECTION).host == TEST_HOST - assert get_config_for_profile(DEFAULT_SECTION).token == TEST_TOKEN + stdout = runner.invoke(cli.configure_cli, ['--token'], + input=(TEST_HOST + '\n' + '\n')).stdout + assert TEST_TOKEN not in stdout + assert len(TEST_TOKEN) * '*' in stdout + assert get_config().host == TEST_HOST + assert get_config().token == TEST_TOKEN def test_configure_two_sections():