ibm_cloud_sdk_core 1.0.0.rc6 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70da4a1a326ce6a6da58f9ffef52092c095948ccf16a22006e37d5f74f026cdd
4
- data.tar.gz: 526ecd788ffbf7f886b039963095ed727de88dd75908246d1cb4285002b530d6
3
+ metadata.gz: 9ea5a5f7575d1adaba82982ad3467bb4a80c39bcc686d291dbb95e450b72e1c1
4
+ data.tar.gz: 870be154704bc0e75a215ba910be6f72aa110855f65961f73ee937ba650e1103
5
5
  SHA512:
6
- metadata.gz: 1a774cf1a504eb675526ce47fed47d7cdd8b83d7e7c97cead03eba2c2814b60544a22e48057d27d7ef262ee5b68560f2e288af291a689f4dd465bf0e5c753146
7
- data.tar.gz: 0bd9c9505ff3016479562257419e525f13e1e6c26e5d2737b228d9f07f5642b9e5c90d3b79c3b619cb57a423b362c541cfbc8fdde91b9e7a2b95248335c76dd6
6
+ metadata.gz: '081184cf6a07b9a48bdfcb7c20a97ff27871fb3f35e56defd88dc5e3baba9b71dc4e954ae9d1ec8c78b9929281a2133cd144967e3028463eb2a8287a9aff2560'
7
+ data.tar.gz: 1ec8854f91cabc79e2bd5e9dadd09278fc72fab8934daf1d9a30e903dd85bdc1ae8aa877beea3cc72ddb5f81b435740c2a5c1fdc93175d721869b198e5606d3c
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
- [![Build Status](https://travis-ci.com/IBM/ruby-sdk-core.svg?branch=master)](https://travis-ci.com/IBM/ruby-sdk-core)
2
- [![codecov](https://codecov.io/gh/IBM/ruby-sdk-core/branch/master/graph/badge.svg)](https://codecov.io/gh/IBM/ruby-sdk-core)
1
+ [![Build Status](https://travis-ci.com/IBM/ruby-sdk-core.svg?branch=main)](https://travis-ci.com/IBM/ruby-sdk-core)
2
+ [![codecov](https://codecov.io/gh/IBM/ruby-sdk-core/branch/main/graph/badge.svg)](https://codecov.io/gh/IBM/ruby-sdk-core)
3
3
  [![Gem Version](https://badge.fury.io/rb/ibm_cloud_sdk_core.svg)](https://rubygems.org/gems/ibm_cloud_sdk_core)
4
4
 
5
5
  # ruby-sdk-core
@@ -31,7 +31,7 @@ This indicates Basic Auth is to be used. Users will pass in a `username` and `pa
31
31
  This indicates that bearer token authentication is to be used. Users can pass in an `bearer_token`, and SDK will generate a Bearer Auth header to send with requests to the service.
32
32
 
33
33
  ### iam
34
- This indicates that IAM token authentication is to be used. Users can pass in an `iam_apikey`. The SDK will manage the token for the user and it will generate a Bearer Auth header to send with requests to the service.
34
+ This indicates that IAM token authentication is to be used. Users can pass in an `apikey`. The SDK will manage the token for the user and it will generate a Bearer Auth header to send with requests to the service.
35
35
 
36
36
  ### cp4d
37
37
  This indicates that the service is an instance of ICP4D, which has its own version of token authentication. Users can pass in a `username` and `password`. If a username and password is given, the SDK will manage the token for the user.
@@ -26,8 +26,8 @@ module IBMCloudSdkCore
26
26
  @info = info
27
27
  # :nocov:
28
28
  end
29
- @transaction_id = transaction_id
30
- @global_transaction_id = global_transaction_id
29
+ @transaction_id = transaction_id || response.headers["X-Dp-Watson-Tran-Id"]
30
+ @global_transaction_id = global_transaction_id || response.headers["X-Global-Transaction-Id"]
31
31
  end
32
32
 
33
33
  def to_s
@@ -10,7 +10,7 @@ module IBMCloudSdkCore
10
10
  @authentication_type = AUTH_TYPE_NO_AUTH
11
11
  end
12
12
 
13
- def authenticate
13
+ def authenticate(*)
14
14
  nil
15
15
  end
16
16
 
@@ -39,16 +39,11 @@ module IBMCloudSdkCore
39
39
 
40
40
  raise ArgumentError.new("authenticator must be provided") if @authenticator.nil?
41
41
 
42
- if @service_name && !@service_url
43
- config = get_service_properties(@service_name)
44
- @service_url = config[:url] unless config.nil?
45
- end
46
-
47
- configure_http_client(disable_ssl_verification: @disable_ssl_verification)
48
- @temp_headers = {}
49
42
  @conn = HTTP::Client.new(
50
43
  headers: {}
51
44
  ).use normalize_uri: { normalizer: NORMALIZER }
45
+ configure_service(@service_name)
46
+ @temp_headers = {}
52
47
  end
53
48
 
54
49
  def disable_ssl_verification=(disable_ssl_verification)
@@ -61,6 +56,15 @@ module IBMCloudSdkCore
61
56
  headers.each_pair { |k, v| @conn.default_options.headers.add(k, v) }
62
57
  end
63
58
 
59
+ def configure_service(service_name)
60
+ config = get_service_properties(service_name) if service_name
61
+
62
+ @service_url = config[:url] unless config.nil? || config[:url].nil?
63
+ disable_ssl_verification = explicitly_true(config[:disable_ssl]) unless config.nil? || config[:disable_ssl].nil?
64
+ # configure the http client if ssl is disabled
65
+ configure_http_client(disable_ssl_verification: disable_ssl_verification) if disable_ssl_verification
66
+ end
67
+
64
68
  # @return [DetailedResponse]
65
69
  def request(args)
66
70
  defaults = { method: nil, url: nil, accept_json: false, headers: nil, params: nil, json: {}, data: nil }
@@ -143,8 +147,6 @@ module IBMCloudSdkCore
143
147
  ssl_context = OpenSSL::SSL::SSLContext.new
144
148
  ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
145
149
  @conn.default_options = { ssl_context: ssl_context }
146
-
147
- @token_manager&.ssl_verification(true)
148
150
  end
149
151
  add_proxy(proxy) unless proxy.empty? || !proxy.dig(:address).is_a?(String) || !proxy.dig(:port).is_a?(Integer)
150
152
  add_timeout(timeout) unless timeout.empty? || (!timeout.key?(:per_operation) && !timeout.key?(:global))
@@ -16,6 +16,13 @@ def check_bad_first_or_last_char(str)
16
16
  return str.start_with?("{", "\"") || str.end_with?("}", "\"") unless str.nil?
17
17
  end
18
18
 
19
+ # checks if the provided value is truthy
20
+ def explicitly_true(value)
21
+ return value.to_s.casecmp("true").zero? unless value.nil?
22
+
23
+ false
24
+ end
25
+
19
26
  # Initiates the credentials based on the credential file
20
27
  def load_from_credential_file(service_name, separator = "=")
21
28
  credential_file_path = ENV["IBM_CREDENTIALS_FILE"]
@@ -37,8 +44,8 @@ def load_from_credential_file(service_name, separator = "=")
37
44
  file_contents = File.open(credential_file_path, "r")
38
45
  config = {}
39
46
  file_contents.each_line do |line|
40
- key_val = line.strip.split(separator)
41
- unless line.start_with?("#") && key.length == 2
47
+ key_val = line.strip.split(separator, 2)
48
+ if key_val.length == 2 && !line.start_with?("#")
42
49
  key = parse_key(key_val[0].downcase, service_name) unless key_val[0].nil?
43
50
  config.store(key.to_sym, key_val[1]) unless key.nil?
44
51
  end
@@ -63,10 +70,20 @@ def load_from_vcap_services(service_name)
63
70
  vcap_services = ENV["VCAP_SERVICES"]
64
71
  unless vcap_services.nil?
65
72
  services = JSON.parse(vcap_services)
73
+ credentials = ""
74
+ # search for matching inner name value
75
+ services.each do |_key, val|
76
+ service = val.detect { |item| item["name"] == service_name }
77
+ credentials = service["credentials"] unless service.nil?
78
+ break unless credentials.nil? || credentials.empty?
79
+ end
66
80
  config = {}
67
- credentials = services[service_name][0]["credentials"] if services.key?(service_name)
68
- return config if credentials.nil?
69
-
81
+ # if no matching inner key is found, then search outer keys
82
+ if credentials.nil? || credentials.empty?
83
+ credentials = services[service_name][0]["credentials"] if services.key?(service_name) && !services[service_name].empty?
84
+ return config if credentials.nil? || credentials.empty?
85
+ end
86
+ # store credentials
70
87
  credentials.each do |key, val|
71
88
  config.store(key.to_sym, val)
72
89
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IBMCloudSdkCore
4
- VERSION = "1.0.0.rc6"
4
+ VERSION = "1.1.2"
5
5
  end
@@ -26,6 +26,7 @@ class BaseServiceTest < Minitest::Test
26
26
  assert_raises do
27
27
  IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: "wrong")
28
28
  end
29
+ ENV.delete("IBM_CREDENTIALS_FILE")
29
30
  end
30
31
 
31
32
  def test_wrong_url
@@ -82,6 +83,47 @@ class BaseServiceTest < Minitest::Test
82
83
  ENV.delete("IBM_CREDENTIALS_FILE")
83
84
  end
84
85
 
86
+ def test_set_credentials_from_path_invalid_auth_type_value
87
+ token_layout = {
88
+ "username": "dummy",
89
+ "role": "Admin",
90
+ "permissions": %w[administrator manage_catalog],
91
+ "sub": "admin",
92
+ "iss": "sss",
93
+ "aud": "sss",
94
+ "uid": "sss",
95
+ "iat": Time.now.to_i + 3600,
96
+ "exp": Time.now.to_i
97
+ }
98
+ token = JWT.encode token_layout, "secret", "HS256"
99
+ response = {
100
+ "access_token" => token,
101
+ "token_type" => "Bearer",
102
+ "expires_in" => 3600,
103
+ "expiration" => 1_524_167_011,
104
+ "refresh_token" => "jy4gl91BQ"
105
+ }
106
+ stub_request(:post, "https://iam.cloud.ibm.com/identity/token")
107
+ .with(
108
+ body: {
109
+ "apikey" => "sadio",
110
+ "grant_type" => "urn:ibm:params:oauth:grant-type:apikey",
111
+ "response_type" => "cloud_iam"
112
+ },
113
+ headers: {
114
+ "Connection" => "close",
115
+ "Host" => "iam.cloud.ibm.com",
116
+ "User-Agent" => "http.rb/4.1.1"
117
+ }
118
+ )
119
+ .to_return(status: 200, body: response.to_json, headers: {})
120
+ file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
121
+ ENV["IBM_CREDENTIALS_FILE"] = file_path
122
+ authenticator = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: "mane")
123
+ assert_equal(authenticator.authentication_type, "iam")
124
+ ENV.delete("IBM_CREDENTIALS_FILE")
125
+ end
126
+
85
127
  def test_set_credentials_from_path_in_env_bearer_token
86
128
  file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
87
129
  ENV["IBM_CREDENTIALS_FILE"] = file_path
@@ -89,6 +131,7 @@ class BaseServiceTest < Minitest::Test
89
131
  service = IBMCloudSdkCore::BaseService.new(service_name: "leo_messi", url: "some.url", authenticator: authenticator)
90
132
  assert_equal(authenticator.authentication_type, "bearerToken")
91
133
  refute_nil(service)
134
+ ENV.delete("IBM_CREDENTIALS_FILE")
92
135
  end
93
136
 
94
137
  def test_vcap_services
@@ -97,6 +140,7 @@ class BaseServiceTest < Minitest::Test
97
140
  service = IBMCloudSdkCore::BaseService.new(service_name: "salah", authenticator: authenticator)
98
141
  assert_equal(authenticator.username, "mo")
99
142
  assert_equal(service.service_name, "salah")
143
+ ENV.delete("VCAP_SERVICES")
100
144
  end
101
145
 
102
146
  def test_dummy_request
@@ -108,24 +152,26 @@ class BaseServiceTest < Minitest::Test
108
152
  }
109
153
  ).to_return(status: 200, body: "", headers: {})
110
154
  authenticator = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: "salah")
111
- service = IBMCloudSdkCore::BaseService.new(service_name: "salah", authenticator: authenticator, service_url: "https://we.the.best")
155
+ service = IBMCloudSdkCore::BaseService.new(service_name: "salah", authenticator: authenticator)
156
+ service.service_url = "https://we.the.best"
112
157
  service_response = service.request(method: "GET", url: "/music", headers: {})
113
158
  assert_equal("", service_response.result)
159
+ ENV.delete("VCAP_SERVICES")
114
160
  end
115
161
 
116
162
  def test_dummy_request_form_data
117
163
  authenticator = IBMCloudSdkCore::BearerTokenAuthenticator.new(bearer_token: "token")
118
164
  service = IBMCloudSdkCore::BaseService.new(
119
165
  service_name: "assistant",
120
- authenticator: authenticator,
121
- service_url: "https://gateway.watsonplatform.net/"
166
+ authenticator: authenticator
122
167
  )
168
+ service.service_url = "https://gateway.watsonplatform.net/assistant/api/"
123
169
  form_data = {}
124
170
  file = File.open(Dir.getwd + "/resources/cnc_test.pdf")
125
171
  filename = file.path if filename.nil? && file.respond_to?(:path)
126
172
  form_data[:file] = HTTP::FormData::File.new(file, content_type: "application/octet-stream", filename: filename)
127
173
 
128
- stub_request(:post, "https://gateway.watsonplatform.net/").with do |req|
174
+ stub_request(:post, "https://gateway.watsonplatform.net/assistant/api/dummy/endpoint").with do |req|
129
175
  # Test the headers.
130
176
  assert_equal(req.headers["Accept"], "application/json")
131
177
  assert_match(%r{\Amultipart/form-data}, req.headers["Content-Type"])
@@ -134,7 +180,7 @@ class BaseServiceTest < Minitest::Test
134
180
  method: "POST",
135
181
  form: form_data,
136
182
  headers: { "Accept" => "application/json" },
137
- url: ""
183
+ url: "dummy/endpoint"
138
184
  )
139
185
  end
140
186
 
@@ -151,10 +197,12 @@ class BaseServiceTest < Minitest::Test
151
197
  }
152
198
  ).to_return(status: 500, body: response.to_json, headers: {})
153
199
  authenticator = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: "salah")
154
- service = IBMCloudSdkCore::BaseService.new(service_name: "salah", authenticator: authenticator, service_url: "https://we.the.best")
200
+ service = IBMCloudSdkCore::BaseService.new(service_name: "salah", authenticator: authenticator)
201
+ service.service_url = "https://we.the.best"
155
202
  assert_raises IBMCloudSdkCore::ApiException do
156
203
  service.request(method: "GET", url: "/music", headers: {})
157
204
  end
205
+ ENV.delete("VCAP_SERVICES")
158
206
  end
159
207
 
160
208
  def test_dummy_request_icp
@@ -169,7 +217,8 @@ class BaseServiceTest < Minitest::Test
169
217
  stub_request(:get, "https://we.the.best/music")
170
218
  .with(
171
219
  headers: {
172
- "Host" => "we.the.best"
220
+ "Host" => "we.the.best",
221
+ "Authorization" => "Basic YXBpa2V5OmljcC14eXo="
173
222
  }
174
223
  ).to_return(status: 200, body: response.to_json, headers: headers)
175
224
  authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
@@ -178,10 +227,109 @@ class BaseServiceTest < Minitest::Test
178
227
  )
179
228
  service = IBMCloudSdkCore::BaseService.new(
180
229
  service_name: "assistant",
181
- authenticator: authenticator,
182
- service_url: "https://we.the.best"
230
+ authenticator: authenticator
183
231
  )
232
+ service.service_url = "https://we.the.best"
184
233
  service_response = service.request(method: "GET", url: "/music", headers: {})
185
234
  assert_equal(response, service_response.result)
186
235
  end
236
+
237
+ def test_configure_service_using_credentials_in_env
238
+ file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
239
+ ENV["IBM_CREDENTIALS_FILE"] = file_path
240
+
241
+ authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
242
+ username: "apikey",
243
+ password: "icp-xyz"
244
+ )
245
+ service = IBMCloudSdkCore::BaseService.new(
246
+ authenticator: authenticator,
247
+ service_name: "visual_recognition"
248
+ )
249
+ service.configure_service("visual_recognition")
250
+
251
+ assert_equal("https://gateway.ronaldo.com", service.service_url)
252
+ assert(service.disable_ssl_verification)
253
+ ENV.delete("IBM_CREDENTIALS_FILE")
254
+ end
255
+
256
+ def test_configure_service_using_credentials_in_vcap_match_outer_key
257
+ authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
258
+ username: "apikey",
259
+ password: "icp-xyz"
260
+ )
261
+ service = IBMCloudSdkCore::BaseService.new(
262
+ authenticator: authenticator,
263
+ service_name: "key_to_service_entry_1"
264
+ )
265
+ ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
266
+ service.configure_service("key_to_service_entry_1")
267
+
268
+ assert_equal("https://on.the.toolchainplatform.net/devops-insights/api", service.service_url)
269
+ ENV.delete("VCAP_SERVICES")
270
+ end
271
+
272
+ def test_configure_service_using_credentials_in_vcap_match_inner_key
273
+ authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
274
+ username: "apikey",
275
+ password: "icp-xyz"
276
+ )
277
+ service = IBMCloudSdkCore::BaseService.new(
278
+ authenticator: authenticator,
279
+ service_name: "devops_insights"
280
+ )
281
+ ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
282
+ service.configure_service("devops_insights")
283
+
284
+ assert_equal("https://ibmtesturl.net/devops_insights/api", service.service_url)
285
+ ENV.delete("VCAP_SERVICES")
286
+ end
287
+
288
+ def test_configure_service_using_credentials_in_vcap_no_matching_key
289
+ authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
290
+ username: "apikey",
291
+ password: "icp-xyz"
292
+ )
293
+ service = IBMCloudSdkCore::BaseService.new(
294
+ authenticator: authenticator,
295
+ service_name: "different_name_two"
296
+ )
297
+ ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
298
+ service.configure_service("different_name_two")
299
+
300
+ assert_equal("https://gateway.watsonplatform.net/different-name-two/api", service.service_url)
301
+ ENV.delete("VCAP_SERVICES")
302
+ end
303
+
304
+ def test_configure_service_using_credentials_in_vcap_empty_entry
305
+ authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
306
+ username: "apikey",
307
+ password: "icp-xyz"
308
+ )
309
+ service = IBMCloudSdkCore::BaseService.new(
310
+ authenticator: authenticator,
311
+ service_name: "empty_service"
312
+ )
313
+ ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
314
+ service.configure_service("empty_service")
315
+
316
+ assert_nil(service.service_url)
317
+ ENV.delete("VCAP_SERVICES")
318
+ end
319
+
320
+ def test_configure_service_using_credentials_in_vcap_no_creds
321
+ authenticator = IBMCloudSdkCore::BasicAuthenticator.new(
322
+ username: "apikey",
323
+ password: "icp-xyz"
324
+ )
325
+ service = IBMCloudSdkCore::BaseService.new(
326
+ authenticator: authenticator,
327
+ service_name: "no-creds-service-two"
328
+ )
329
+ ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
330
+ service.configure_service("no-creds-service-two")
331
+
332
+ assert_nil(service.service_url)
333
+ ENV.delete("VCAP_SERVICES")
334
+ end
187
335
  end
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: true
2
+
3
+ require("json")
4
+ require("jwt")
5
+ require_relative("./../test_helper.rb")
6
+ require_relative("./../../lib/ibm_cloud_sdk_core/authenticators/basic_authenticator")
7
+ require_relative("./../../lib/ibm_cloud_sdk_core/authenticators/config_based_authenticator_factory")
8
+ require("webmock/minitest")
9
+
10
+ WebMock.disable_net_connect!(allow_localhost: true)
11
+
12
+ # Unit tests for the utility methods
13
+ class UtilsTest < Minitest::Test
14
+ def test_explicitly_true
15
+ assert(explicitly_true("true"))
16
+ assert(explicitly_true("True"))
17
+ assert(explicitly_true(true))
18
+
19
+ assert_equal(explicitly_true("false"), false)
20
+ assert_equal(explicitly_true("False"), false)
21
+ assert_equal(explicitly_true("someothervalue"), false)
22
+ assert_equal(explicitly_true(""), false)
23
+ assert_equal(explicitly_true(false), false)
24
+ assert_equal(explicitly_true(nil), false)
25
+ end
26
+
27
+ def test_get_configuration_credential_file
28
+ file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
29
+ ENV["IBM_CREDENTIALS_FILE"] = file_path
30
+ # get properties
31
+ config = get_service_properties("service_1")
32
+ auth_type = config[:auth_type] unless config.nil?
33
+ apikey = config[:apikey] unless config.nil?
34
+ auth_url = config[:auth_url] unless config.nil?
35
+ client_id = config[:client_id] unless config.nil?
36
+ client_secret = config[:client_secret] unless config.nil?
37
+ service_url = config[:url] unless config.nil?
38
+
39
+ assert !auth_type.nil?
40
+ assert !apikey.nil?
41
+ assert !auth_url.nil?
42
+ assert !client_id.nil?
43
+ assert !client_secret.nil?
44
+ assert !service_url.nil?
45
+
46
+ assert_equal("iam", auth_type)
47
+ assert_equal("V4HXmoUtMjohnsnow=KotN", apikey)
48
+ assert_equal("https://iamhost/iam/api=", auth_url)
49
+ assert_equal("somefake========id", client_id)
50
+ assert_equal("==my-client-secret==", client_secret)
51
+ assert_equal("service1.com/api", service_url)
52
+ ENV.delete("IBM_CREDENTIALS_FILE")
53
+ end
54
+
55
+ def test_get_configuration_from_env
56
+ # Service1 auth properties configured with IAM and a token containing '='
57
+ ENV["SERVICE_1_AUTH_TYPE"] = "iam"
58
+ ENV["SERVICE_1_APIKEY"] = "V4HXmoUtMjohnsnow=KotN"
59
+ ENV["SERVICE_1_CLIENT_ID"] = "somefake========id"
60
+ ENV["SERVICE_1_CLIENT_SECRET"] = "==my-client-secret=="
61
+ ENV["SERVICE_1_AUTH_URL"] = "https://iamhost/iam/api="
62
+ # Service1 service properties
63
+ ENV["SERVICE_1_URL"] = "service1.com/api"
64
+ # get properties
65
+ config = get_service_properties("service_1")
66
+ auth_type = config[:auth_type] unless config.nil?
67
+ apikey = config[:apikey] unless config.nil?
68
+ auth_url = config[:auth_url] unless config.nil?
69
+ client_id = config[:client_id] unless config.nil?
70
+ client_secret = config[:client_secret] unless config.nil?
71
+ service_url = config[:url] unless config.nil?
72
+
73
+ assert !auth_type.nil?
74
+ assert !apikey.nil?
75
+ assert !auth_url.nil?
76
+ assert !client_id.nil?
77
+ assert !client_secret.nil?
78
+ assert !service_url.nil?
79
+
80
+ assert_equal("iam", auth_type)
81
+ assert_equal("V4HXmoUtMjohnsnow=KotN", apikey)
82
+ assert_equal("https://iamhost/iam/api=", auth_url)
83
+ assert_equal("somefake========id", client_id)
84
+ assert_equal("==my-client-secret==", client_secret)
85
+ assert_equal("service1.com/api", service_url)
86
+
87
+ ENV.delete("SERVICE_1_AUTH_TYPE")
88
+ ENV.delete("SERVICE_1_APIKEY")
89
+ ENV.delete("SERVICE_1_CLIENT_ID")
90
+ ENV.delete("SERVICE_1_CLIENT_SECRET")
91
+ ENV.delete("SERVICE_1_AUTH_URL")
92
+ ENV.delete("SERVICE_1_URL")
93
+ end
94
+
95
+ def test_get_configuration_from_vcap
96
+ ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
97
+ # get properties
98
+ config = get_service_properties("equals-sign-test")
99
+ auth_type = config[:auth_type] unless config.nil?
100
+ apikey = config[:apikey] unless config.nil?
101
+ iam_url = config[:iam_url] unless config.nil?
102
+ service_url = config[:url] unless config.nil?
103
+
104
+ assert !auth_type.nil?
105
+ assert !apikey.nil?
106
+ assert !iam_url.nil?
107
+ assert !service_url.nil?
108
+
109
+ assert_equal("iam", auth_type)
110
+ assert_equal("V4HXmoUtMjohnsnow=KotN", apikey)
111
+ assert_equal("https://iamhost/iam/api=", iam_url)
112
+ assert_equal("https://gateway.watsonplatform.net/testService", service_url)
113
+
114
+ ENV.delete("VCAP_SERVICES")
115
+ end
116
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ibm_cloud_sdk_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc6
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mamoon Raja
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-02 00:00:00.000000000 Z
11
+ date: 2021-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.16'
61
+ version: '1.6'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.16'
68
+ version: '1.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: codecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '12.3'
173
+ version: '13.0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '12.3'
180
+ version: '13.0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rubocop
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -253,6 +253,7 @@ files:
253
253
  - test/unit/test_iam_authenticator.rb
254
254
  - test/unit/test_iam_token_manager.rb
255
255
  - test/unit/test_jwt_token_manager.rb
256
+ - test/unit/test_utils.rb
256
257
  homepage: https://www.github.com/IBM
257
258
  licenses:
258
259
  - Apache-2.0
@@ -271,12 +272,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
271
272
  version: '2.3'
272
273
  required_rubygems_version: !ruby/object:Gem::Requirement
273
274
  requirements:
274
- - - ">"
275
+ - - ">="
275
276
  - !ruby/object:Gem::Version
276
- version: 1.3.1
277
+ version: '0'
277
278
  requirements: []
278
- rubyforge_project:
279
- rubygems_version: 2.7.8
279
+ rubygems_version: 3.0.8
280
280
  signing_key:
281
281
  specification_version: 4
282
282
  summary: Official IBM Cloud SDK core library