From 6ec1bd85b9370257bfa0496c32c704cd3417468c Mon Sep 17 00:00:00 2001 From: Weijia Chen Date: Mon, 24 Jul 2023 21:12:32 +0000 Subject: [PATCH 1/6] feat: add get_bq_config_path() to _cloud_sdk.py --- google/auth/_cloud_sdk.py | 18 ++++++++++++++++-- tests/test__cloud_sdk.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/google/auth/_cloud_sdk.py b/google/auth/_cloud_sdk.py index a94411949..9e0062a8d 100644 --- a/google/auth/_cloud_sdk.py +++ b/google/auth/_cloud_sdk.py @@ -24,6 +24,8 @@ # The ~/.config subdirectory containing gcloud credentials. _CONFIG_DIRECTORY = "gcloud" +# The ~/.config subdirectory containing gcloud credentials for bq. +_CONFIG_DIRECTORY_BQ = "bq" # Windows systems store config at %APPDATA%\gcloud _WINDOWS_CONFIG_ROOT_ENV_VAR = "APPDATA" # The name of the file in the Cloud SDK config that contains default @@ -42,8 +44,11 @@ ) -def get_config_path(): - """Returns the absolute path the the Cloud SDK's configuration directory. +def get_config_path(config_directory=_CONFIG_DIRECTORY): + """Returns the absolute path of the given configuration directory. + + Args: + config_directory: The absolute path of the configuration directory. Returns: str: The Cloud SDK config path. @@ -70,6 +75,15 @@ def get_config_path(): return os.path.join(drive, "\\", _CONFIG_DIRECTORY) +def get_bq_config_path(): + """Returns the absolute path of bq's configuration directory. + + Returns: + str: The bq config path. + """ + return get_config_path(config_directory=_CONFIG_DIRECTORY_BQ) + + def get_application_default_credentials_path(): """Gets the path to the application default credentials file. diff --git a/tests/test__cloud_sdk.py b/tests/test__cloud_sdk.py index e45c65bd9..e5de4f2b6 100644 --- a/tests/test__cloud_sdk.py +++ b/tests/test__cloud_sdk.py @@ -148,6 +148,42 @@ def test_get_config_path_no_appdata(monkeypatch): assert os.path.split(config_path) == ("G:/\\", _cloud_sdk._CONFIG_DIRECTORY) +def test_get_bq_config_path_env_var(monkeypatch): + config_path_sentinel = "config_path" + monkeypatch.setenv(environment_vars.CLOUD_SDK_CONFIG_DIR, config_path_sentinel) + config_path = _cloud_sdk.get_bq_config_path() + assert config_path == config_path_sentinel + + +@mock.patch("os.path.expanduser") +def test_get_bq_config_path_unix(expanduser): + expanduser.side_effect = lambda path: path + + config_path = _cloud_sdk.get_bq_config_path() + + assert os.path.split(config_path) == ("~/.config", _cloud_sdk._CONFIG_DIRECTORY_BQ) + + +@mock.patch("os.name", new="nt") +def test_get_bq_config_path_windows(monkeypatch): + appdata = "appdata" + monkeypatch.setenv(_cloud_sdk._WINDOWS_CONFIG_ROOT_ENV_VAR, appdata) + + config_path = _cloud_sdk.get_bq_config_path() + + assert os.path.split(config_path) == (appdata, _cloud_sdk._CONFIG_DIRECTORY_BQ) + + +@mock.patch("os.name", new="nt") +def test_get_bq_config_path_no_appdata(monkeypatch): + monkeypatch.delenv(_cloud_sdk._WINDOWS_CONFIG_ROOT_ENV_VAR, raising=False) + monkeypatch.setenv("SystemDrive", "G:") + + config_path = _cloud_sdk.get_bq_config_path() + + assert os.path.split(config_path) == ("G:/\\", _cloud_sdk._CONFIG_DIRECTORY_BQ) + + @mock.patch("os.name", new="nt") @mock.patch("subprocess.check_output", autospec=True) def test_get_auth_access_token_windows(check_output): From b5266f6aa0a9826b5da24ff0cdf006955bf696aa Mon Sep 17 00:00:00 2001 From: Weijia Chen Date: Tue, 25 Jul 2023 17:16:58 +0000 Subject: [PATCH 2/6] add get_gcloud_config_path() --- google/auth/_cloud_sdk.py | 27 ++++++++++++++++++--------- tests/test__cloud_sdk.py | 22 +++++++++++----------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/google/auth/_cloud_sdk.py b/google/auth/_cloud_sdk.py index 9e0062a8d..40e94b575 100644 --- a/google/auth/_cloud_sdk.py +++ b/google/auth/_cloud_sdk.py @@ -23,7 +23,7 @@ # The ~/.config subdirectory containing gcloud credentials. -_CONFIG_DIRECTORY = "gcloud" +_CONFIG_DIRECTORY_GCLOUD = "gcloud" # The ~/.config subdirectory containing gcloud credentials for bq. _CONFIG_DIRECTORY_BQ = "bq" # Windows systems store config at %APPDATA%\gcloud @@ -44,14 +44,14 @@ ) -def get_config_path(config_directory=_CONFIG_DIRECTORY): +def get_config_path(config_directory): """Returns the absolute path of the given configuration directory. Args: config_directory: The absolute path of the configuration directory. Returns: - str: The Cloud SDK config path. + str: The config path. """ # If the path is explicitly set, return that. try: @@ -59,20 +59,29 @@ def get_config_path(config_directory=_CONFIG_DIRECTORY): except KeyError: pass - # Non-windows systems store this at ~/.config/gcloud + # Non-windows systems store this at ~/.config/. if os.name != "nt": - return os.path.join(os.path.expanduser("~"), ".config", _CONFIG_DIRECTORY) - # Windows systems store config at %APPDATA%\gcloud + return os.path.join(os.path.expanduser("~"), ".config", config_directory) + # Windows systems store config at %APPDATA%\. else: try: return os.path.join( - os.environ[_WINDOWS_CONFIG_ROOT_ENV_VAR], _CONFIG_DIRECTORY + os.environ[_WINDOWS_CONFIG_ROOT_ENV_VAR], config_directory ) except KeyError: # This should never happen unless someone is really # messing with things, but we'll cover the case anyway. drive = os.environ.get("SystemDrive", "C:") - return os.path.join(drive, "\\", _CONFIG_DIRECTORY) + return os.path.join(drive, "\\", config_directory) + + +def get_gcloud_config_path(): + """Returns the absolute path of Cloud CLI's configuration directory. + + Returns: + str: The Cloud CLI config path. + """ + return get_config_path(config_directory=_CONFIG_DIRECTORY_GCLOUD) def get_bq_config_path(): @@ -92,7 +101,7 @@ def get_application_default_credentials_path(): Returns: str: The full path to application default credentials. """ - config_path = get_config_path() + config_path = get_gcloud_config_path() return os.path.join(config_path, _CREDENTIALS_FILENAME) diff --git a/tests/test__cloud_sdk.py b/tests/test__cloud_sdk.py index e5de4f2b6..50ea2f910 100644 --- a/tests/test__cloud_sdk.py +++ b/tests/test__cloud_sdk.py @@ -112,40 +112,40 @@ def test_get_application_default_credentials_path(get_config_dir): ) -def test_get_config_path_env_var(monkeypatch): +def test_get_gcloud_config_path_env_var(monkeypatch): config_path_sentinel = "config_path" monkeypatch.setenv(environment_vars.CLOUD_SDK_CONFIG_DIR, config_path_sentinel) - config_path = _cloud_sdk.get_config_path() + config_path = _cloud_sdk.get_gcloud_config_path() assert config_path == config_path_sentinel @mock.patch("os.path.expanduser") -def test_get_config_path_unix(expanduser): +def test_get_gcloud_config_path_unix(expanduser): expanduser.side_effect = lambda path: path - config_path = _cloud_sdk.get_config_path() + config_path = _cloud_sdk.get_gcloud_config_path() - assert os.path.split(config_path) == ("~/.config", _cloud_sdk._CONFIG_DIRECTORY) + assert os.path.split(config_path) == ("~/.config", _cloud_sdk._CONFIG_DIRECTORY_GCLOUD) @mock.patch("os.name", new="nt") -def test_get_config_path_windows(monkeypatch): +def test_get_gcloud_config_path_windows(monkeypatch): appdata = "appdata" monkeypatch.setenv(_cloud_sdk._WINDOWS_CONFIG_ROOT_ENV_VAR, appdata) - config_path = _cloud_sdk.get_config_path() + config_path = _cloud_sdk.get_gcloud_config_path() - assert os.path.split(config_path) == (appdata, _cloud_sdk._CONFIG_DIRECTORY) + assert os.path.split(config_path) == (appdata, _cloud_sdk._CONFIG_DIRECTORY_GCLOUD) @mock.patch("os.name", new="nt") -def test_get_config_path_no_appdata(monkeypatch): +def test_get_gcloud_config_path_no_appdata(monkeypatch): monkeypatch.delenv(_cloud_sdk._WINDOWS_CONFIG_ROOT_ENV_VAR, raising=False) monkeypatch.setenv("SystemDrive", "G:") - config_path = _cloud_sdk.get_config_path() + config_path = _cloud_sdk.get_gcloud_config_path() - assert os.path.split(config_path) == ("G:/\\", _cloud_sdk._CONFIG_DIRECTORY) + assert os.path.split(config_path) == ("G:/\\", _cloud_sdk._CONFIG_DIRECTORY_GCLOUD) def test_get_bq_config_path_env_var(monkeypatch): From 0e5ff2ec478ea81bd851784c3a033bc299087777 Mon Sep 17 00:00:00 2001 From: Carl Lundin Date: Tue, 25 Jul 2023 11:06:09 -0700 Subject: [PATCH 3/6] chore: Refresh system test creds. --- system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index 15589afb983a2fcdb5dd8972bfd455aac6483b38..eb5baf703fc7c600b0248028004402430146dae0 100644 GIT binary patch literal 10324 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 From 946c63ace20d693d6f1c19599a919f88f6f28ed0 Mon Sep 17 00:00:00 2001 From: Weijia Chen Date: Tue, 25 Jul 2023 19:19:06 +0000 Subject: [PATCH 4/6] add default parameter value to get_config_path() --- google/auth/_cloud_sdk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/auth/_cloud_sdk.py b/google/auth/_cloud_sdk.py index 40e94b575..7cd41434a 100644 --- a/google/auth/_cloud_sdk.py +++ b/google/auth/_cloud_sdk.py @@ -44,7 +44,7 @@ ) -def get_config_path(config_directory): +def get_config_path(config_directory=_CONFIG_DIRECTORY_GCLOUD): """Returns the absolute path of the given configuration directory. Args: From 5bbc9d299d3d3da31f8af6cfb8bdd71d3a9fe036 Mon Sep 17 00:00:00 2001 From: Weijia Chen Date: Fri, 28 Jul 2023 04:24:16 +0000 Subject: [PATCH 5/6] fix lint errors --- tests/test__cloud_sdk.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test__cloud_sdk.py b/tests/test__cloud_sdk.py index 50ea2f910..4eaf1b18f 100644 --- a/tests/test__cloud_sdk.py +++ b/tests/test__cloud_sdk.py @@ -125,7 +125,10 @@ def test_get_gcloud_config_path_unix(expanduser): config_path = _cloud_sdk.get_gcloud_config_path() - assert os.path.split(config_path) == ("~/.config", _cloud_sdk._CONFIG_DIRECTORY_GCLOUD) + assert os.path.split(config_path) == ( + "~/.config", + _cloud_sdk._CONFIG_DIRECTORY_GCLOUD, + ) @mock.patch("os.name", new="nt") From 8e2b920b2bf192ae5329e86a01f448be0bb2fe58 Mon Sep 17 00:00:00 2001 From: Carl Lundin Date: Fri, 28 Jul 2023 08:53:26 -0700 Subject: [PATCH 6/6] chore: Refresh system test creds. --- system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index eb5baf703fc7c600b0248028004402430146dae0..8ff3d379221c9cb03aa0f66ef25b79aa2b6eefd5 100644 GIT binary patch literal 10324 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
    l&7O?pc!E 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 literal 10324 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 mI+To20g$87)