diff --git a/gslib/tests/test_shim_util.py b/gslib/tests/test_shim_util.py index 39f586019f..b5ca43f712 100644 --- a/gslib/tests/test_shim_util.py +++ b/gslib/tests/test_shim_util.py @@ -1082,7 +1082,7 @@ def test_gcs_json_endpoint_translation(self): self.assertEqual( env_vars, { 'CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE': - 'https://foo_host:1234/storage/v2', + 'https://foo_host:1234/storage/v2/', }) def test_gcs_json_endpoint_translation_with_missing_port(self): @@ -1094,10 +1094,11 @@ def test_gcs_json_endpoint_translation_with_missing_port(self): }): flags, env_vars = self._fake_command._translate_boto_config() self.assertEqual(flags, []) - self.assertEqual(env_vars, { - 'CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE': - 'https://foo_host/storage/v2', - }) + self.assertEqual( + env_vars, { + 'CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE': + 'https://foo_host/storage/v2/', + }) def test_gcs_json_endpoint_translation_usees_default_version_v1(self): with _mock_boto_config( @@ -1107,10 +1108,12 @@ def test_gcs_json_endpoint_translation_usees_default_version_v1(self): }}): flags, env_vars = self._fake_command._translate_boto_config() self.assertEqual(flags, []) + # Implicitly testing that the translation must start with + # https:// and end with a trailing forward slash. self.assertEqual( env_vars, { 'CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE': - 'https://foo_host:1234/storage/v1' + 'https://foo_host:1234/storage/v1/' }) def test_s3_endpoint_translation(self): diff --git a/gslib/utils/shim_util.py b/gslib/utils/shim_util.py index 41745e49ef..2bc2297bed 100644 --- a/gslib/utils/shim_util.py +++ b/gslib/utils/shim_util.py @@ -248,8 +248,10 @@ def _get_gcs_json_endpoint_from_boto_config(config): gs_json_port = config.get('Credentials', 'gs_json_port') port = ':' + gs_json_port if gs_json_port else '' json_api_version = config.get('Credentials', 'json_api_version', 'v1') - return 'https://{}{}/storage/{}'.format(gs_json_host, port, - json_api_version) + # Note that the json endpoint must start with https:// + # and end with a trailing forward slash. + return 'https://{}{}/storage/{}/'.format(gs_json_host, port, + json_api_version) return None