Skip to content

Commit 50fad59

Browse files
committed
fix(config): Handle multi word service name
1 parent fe36514 commit 50fad59

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

ibm_cloud_sdk_core/utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,16 @@ def read_from_env_variables(service_name):
9494
"""
9595
:return dict config: parsed env variables
9696
"""
97-
service_name = service_name.replace(' ', '_').replace('-', '_').lower()
9897
config = {}
9998
for key, value in environ.items():
100-
_parse_key_and_update_config(config, service_name.lower(), key.lower(), value)
99+
_parse_key_and_update_config(config, service_name, key, value)
101100
return config
102101

103102
def read_from_credential_file(service_name, separator='='):
104103
"""
105104
:param str service_name: The service name
106105
:return dict config: parsed key values pairs
107106
"""
108-
service_name = service_name.replace(' ', '_').replace('-', '_').lower()
109107
DEFAULT_CREDENTIALS_FILE_NAME = 'ibm-credentials.env'
110108

111109
# File path specified by an env variable
@@ -136,10 +134,12 @@ def read_from_credential_file(service_name, separator='='):
136134
return config
137135

138136
def _parse_key_and_update_config(config, service_name, key, value):
137+
service_name = service_name.replace(' ', '_').replace('-', '_').lower()
138+
key = key.replace(' ', '_').replace('-', '_').lower()
139139
if key.startswith(service_name):
140-
index = key.find('_')
140+
index = key.find(service_name)
141141
if index != -1:
142-
config[key[index + 1:]] = value
142+
config[key[index + len(service_name) + 1:]] = value
143143

144144
def read_from_vcap_services(service_name):
145145
service_name = service_name.replace(' ', '_').replace('-', '_').lower()

test/test_base_service.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,3 +422,8 @@ def test_service_url_not_set():
422422
with pytest.raises(ValueError) as err:
423423
service.prepare_request('POST', url='')
424424
assert str(err.value) == 'The service_url is required'
425+
426+
def test_multi_word_service_name():
427+
os.environ['personality-insights_url'] = 'xyz'
428+
service = BaseService(service_url='', authenticator=NoAuthAuthenticator(), display_name='personality-insights')
429+
assert service.service_url == 'xyz'

test/test_utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,10 @@ def test_vcap_credentials():
8686
authenticator = get_authenticator_from_environment('test')
8787
assert authenticator is None
8888
del os.environ['VCAP_SERVICES']
89+
90+
def test_multi_word_service_name():
91+
os.environ['PERSONALITY-INSIGHTS_APIKEY'] = '5678efgh'
92+
authenticator = get_authenticator_from_environment('personality-insights')
93+
assert authenticator is not None
94+
assert authenticator.token_manager.apikey == '5678efgh'
95+
del os.environ['PERSONALITY-INSIGHTS_APIKEY']

0 commit comments

Comments
 (0)