ibm_cloud_sdk_core 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +3 -0
- data/lib/ibm_cloud_sdk_core.rb +6 -0
- data/lib/ibm_cloud_sdk_core/api_exception.rb +41 -0
- data/lib/ibm_cloud_sdk_core/base_service.rb +284 -0
- data/lib/ibm_cloud_sdk_core/detailed_response.rb +23 -0
- data/lib/ibm_cloud_sdk_core/iam_token_manager.rb +150 -0
- data/lib/ibm_cloud_sdk_core/version.rb +5 -0
- data/rakefile +44 -0
- data/test/test_helper.rb +28 -0
- data/test/unit/test_base_service.rb +304 -0
- data/test/unit/test_configure_http_proxy.rb +152 -0
- data/test/unit/test_detailed_response.rb +26 -0
- data/test/unit/test_iam_token_manager.rb +228 -0
- metadata +254 -0
data/rakefile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dotenv/tasks"
|
4
|
+
require "rake/testtask"
|
5
|
+
require "rubocop/rake_task"
|
6
|
+
|
7
|
+
task default: %w[def]
|
8
|
+
|
9
|
+
RuboCop::RakeTask.new
|
10
|
+
|
11
|
+
namespace :test do
|
12
|
+
Rake::TestTask.new do |t|
|
13
|
+
t.name = "unit"
|
14
|
+
t.description = "Run unit tests"
|
15
|
+
t.libs << "test"
|
16
|
+
t.test_files = FileList["test/unit/*.rb"]
|
17
|
+
t.verbose = true
|
18
|
+
t.warning = true
|
19
|
+
t.deps = [:rubocop]
|
20
|
+
end
|
21
|
+
|
22
|
+
Rake::TestTask.new do |t|
|
23
|
+
t.name = "appveyor_status"
|
24
|
+
t.description = "Checks to ensure that AppVeyor tests pass before deploying from Travis"
|
25
|
+
t.libs << "test"
|
26
|
+
t.test_files = FileList["test/appveyor_status.rb"]
|
27
|
+
t.verbose = false
|
28
|
+
t.warning = false
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "Run unit tests"
|
33
|
+
task :test do
|
34
|
+
Rake::Task["test:unit"].invoke
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Run tests and generate a code coverage report"
|
38
|
+
task :coverage do
|
39
|
+
ENV["COVERAGE"] = "true" if ENV["TRAVIS_RUBY_VERSION"] == "2.5.1" || ENV["CI"].nil?
|
40
|
+
Rake::Task["test"].execute
|
41
|
+
end
|
42
|
+
|
43
|
+
task def: %i[coverage] do
|
44
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require("simplecov")
|
4
|
+
require("codecov")
|
5
|
+
require("minitest/reporters")
|
6
|
+
|
7
|
+
if ENV["COVERAGE"]
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::Codecov if ENV["CI"]
|
9
|
+
unless SimpleCov.running
|
10
|
+
SimpleCov.start do
|
11
|
+
add_filter "/test/"
|
12
|
+
add_filter do |src_file|
|
13
|
+
File.basename(src_file.filename) == "version.rb"
|
14
|
+
end
|
15
|
+
|
16
|
+
command_name "Minitest"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require("minitest/autorun")
|
22
|
+
require_relative("./../lib/ibm_cloud_sdk_core.rb")
|
23
|
+
require("minitest/retry")
|
24
|
+
|
25
|
+
Minitest::Retry.use!
|
26
|
+
|
27
|
+
Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(color: true, slow_count: 10), Minitest::Reporters::SpecReporter.new, Minitest::Reporters::HtmlReporter.new] if ENV["CI"].nil?
|
28
|
+
Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(color: true, slow_count: 10), Minitest::Reporters::SpecReporter.new] if ENV["CI"]
|
@@ -0,0 +1,304 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require("json")
|
4
|
+
require_relative("./../test_helper.rb")
|
5
|
+
require("webmock/minitest")
|
6
|
+
|
7
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
8
|
+
|
9
|
+
# Unit tests for the base service
|
10
|
+
class BaseServiceTest < Minitest::Test
|
11
|
+
def test_wrong_username
|
12
|
+
assert_raises do
|
13
|
+
IBMCloudSdkCore::BaseService.new(
|
14
|
+
username: "\"username",
|
15
|
+
password: "password"
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_wrong_apikey
|
21
|
+
assert_raises do
|
22
|
+
IBMCloudSdkCore::BaseService.new(
|
23
|
+
iam_apikey: "{apikey"
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_wrong_url
|
29
|
+
assert_raises do
|
30
|
+
IBMCloudSdkCore::BaseService.new(
|
31
|
+
iam_apikey: "apikey",
|
32
|
+
url: "url}"
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_correct_creds_and_headers
|
38
|
+
service = IBMCloudSdkCore::BaseService.new(
|
39
|
+
username: "username",
|
40
|
+
password: "password"
|
41
|
+
)
|
42
|
+
service.add_default_headers(
|
43
|
+
headers: {
|
44
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
45
|
+
"X-Watson-Test" => "1"
|
46
|
+
}
|
47
|
+
)
|
48
|
+
service.headers("analytics" => "example")
|
49
|
+
refute_nil(service)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_iam_access_token
|
53
|
+
token = "new$token"
|
54
|
+
service = IBMCloudSdkCore::BaseService.new(
|
55
|
+
url: "https://we.the.best"
|
56
|
+
)
|
57
|
+
response = service.iam_access_token(iam_access_token: token)
|
58
|
+
assert_equal(response, token)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_set_credentials_from_path_in_env
|
62
|
+
file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
|
63
|
+
ENV["IBM_CREDENTIALS_FILE"] = file_path
|
64
|
+
service = IBMCloudSdkCore::BaseService.new(display_name: "Visual Recognition")
|
65
|
+
assert_equal(service.url, "https://gateway.ronaldo.com")
|
66
|
+
refute_nil(service)
|
67
|
+
ENV.delete("IBM_CREDENTIALS_FILE")
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_vcap_services
|
71
|
+
ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
|
72
|
+
service = IBMCloudSdkCore::BaseService.new(vcap_services_name: "salah", use_vcap_services: true)
|
73
|
+
assert_equal(service.username, "mo")
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_dummy_request
|
77
|
+
ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
|
78
|
+
stub_request(:get, "https://we.the.best/music")
|
79
|
+
.with(
|
80
|
+
headers: {
|
81
|
+
"Host" => "we.the.best"
|
82
|
+
}
|
83
|
+
).to_return(status: 200, body: "", headers: {})
|
84
|
+
service = IBMCloudSdkCore::BaseService.new(display_name: "Salah", url: "https://we.the.best")
|
85
|
+
service_response = service.request(method: "GET", url: "/music", headers: {})
|
86
|
+
assert_equal("", service_response.result)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_dummy_request_form_data
|
90
|
+
service = IBMCloudSdkCore::BaseService.new(
|
91
|
+
iam_apikey: "apikey",
|
92
|
+
iam_access_token: "token",
|
93
|
+
url: "https://gateway.watsonplatform.net/"
|
94
|
+
)
|
95
|
+
form_data = {}
|
96
|
+
file = File.open(Dir.getwd + "/resources/cnc_test.pdf")
|
97
|
+
filename = file.path if filename.nil? && file.respond_to?(:path)
|
98
|
+
form_data[:file] = HTTP::FormData::File.new(file, content_type: "application/octet-stream", filename: filename)
|
99
|
+
|
100
|
+
stub_request(:post, "https://gateway.watsonplatform.net/").with do |req|
|
101
|
+
# Test the headers.
|
102
|
+
assert_equal(req.headers["Accept"], "application/json")
|
103
|
+
assert_match(%r{\Amultipart/form-data}, req.headers["Content-Type"])
|
104
|
+
end
|
105
|
+
service.request(
|
106
|
+
method: "POST",
|
107
|
+
form: form_data,
|
108
|
+
headers: { "Accept" => "application/json" },
|
109
|
+
url: ""
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_dummy_request_fails
|
114
|
+
ENV["VCAP_SERVICES"] = JSON.parse(File.read(Dir.getwd + "/resources/vcap-testing.json")).to_json
|
115
|
+
response = {
|
116
|
+
"code" => "500",
|
117
|
+
"error" => "Oh no"
|
118
|
+
}
|
119
|
+
stub_request(:get, "https://we.the.best/music")
|
120
|
+
.with(
|
121
|
+
headers: {
|
122
|
+
"Host" => "we.the.best"
|
123
|
+
}
|
124
|
+
).to_return(status: 500, body: response.to_json, headers: {})
|
125
|
+
service = IBMCloudSdkCore::BaseService.new(display_name: "Salah", url: "https://we.the.best")
|
126
|
+
assert_raises do
|
127
|
+
service.request(method: "GET", url: "/music", headers: {})
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_dummy_request_icp
|
132
|
+
response = {
|
133
|
+
"text" => "I want financial advice today.",
|
134
|
+
"created" => "2016-07-11T16:39:01.774Z",
|
135
|
+
"updated" => "2015-12-07T18:53:59.153Z"
|
136
|
+
}
|
137
|
+
headers = {
|
138
|
+
"Content-Type" => "application/json"
|
139
|
+
}
|
140
|
+
stub_request(:get, "https://we.the.best/music")
|
141
|
+
.with(
|
142
|
+
headers: {
|
143
|
+
"Authorization" => "Basic YXBpa2V5OmljcC14eXo=",
|
144
|
+
"Host" => "we.the.best"
|
145
|
+
}
|
146
|
+
).to_return(status: 200, body: response.to_json, headers: headers)
|
147
|
+
service = IBMCloudSdkCore::BaseService.new(
|
148
|
+
url: "https://we.the.best",
|
149
|
+
username: "apikey",
|
150
|
+
password: "icp-xyz"
|
151
|
+
)
|
152
|
+
service_response = service.request(method: "GET", url: "/music", headers: {})
|
153
|
+
assert_equal(response, service_response.result)
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_dummy_request_icp_iam_apikey
|
157
|
+
response = {
|
158
|
+
"text" => "I want financial advice today.",
|
159
|
+
"created" => "2016-07-11T16:39:01.774Z",
|
160
|
+
"updated" => "2015-12-07T18:53:59.153Z"
|
161
|
+
}
|
162
|
+
headers = {
|
163
|
+
"Content-Type" => "application/json"
|
164
|
+
}
|
165
|
+
stub_request(:get, "https://we.the.best/music")
|
166
|
+
.with(
|
167
|
+
headers: {
|
168
|
+
"Authorization" => "Basic YXBpa2V5OmljcC14eXo=",
|
169
|
+
"Host" => "we.the.best"
|
170
|
+
}
|
171
|
+
).to_return(status: 200, body: response.to_json, headers: headers)
|
172
|
+
service = IBMCloudSdkCore::BaseService.new(
|
173
|
+
url: "https://we.the.best",
|
174
|
+
iam_apikey: "icp-xyz"
|
175
|
+
)
|
176
|
+
service_response = service.request(method: "GET", url: "/music", headers: {})
|
177
|
+
assert_equal(response, service_response.result)
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_dummy_request_icp_iam_apikey_cred_file
|
181
|
+
response = {
|
182
|
+
"text" => "I want financial advice today.",
|
183
|
+
"created" => "2016-07-11T16:39:01.774Z",
|
184
|
+
"updated" => "2015-12-07T18:53:59.153Z"
|
185
|
+
}
|
186
|
+
headers = {
|
187
|
+
"Content-Type" => "application/json"
|
188
|
+
}
|
189
|
+
stub_request(:get, "https://we.the.best/music")
|
190
|
+
.with(
|
191
|
+
headers: {
|
192
|
+
"Authorization" => "Basic YXBpa2V5OmljcC14eXo=",
|
193
|
+
"Host" => "we.the.best"
|
194
|
+
}
|
195
|
+
).to_return(status: 200, body: response.to_json, headers: headers)
|
196
|
+
file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
|
197
|
+
ENV["IBM_CREDENTIALS_FILE"] = file_path
|
198
|
+
service = IBMCloudSdkCore::BaseService.new(
|
199
|
+
url: "https://we.the.best",
|
200
|
+
display_name: "messi"
|
201
|
+
)
|
202
|
+
service_response = service.request(method: "GET", url: "/music", headers: {})
|
203
|
+
assert_equal(response, service_response.result)
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_dummy_request_username_apikey
|
207
|
+
response = {
|
208
|
+
"text" => "I want financial advice today.",
|
209
|
+
"created" => "2016-07-11T16:39:01.774Z",
|
210
|
+
"updated" => "2015-12-07T18:53:59.153Z"
|
211
|
+
}
|
212
|
+
token_response = {
|
213
|
+
"access_token" => "oAeisG8yqPY7sFR_x66Z15",
|
214
|
+
"token_type" => "Bearer",
|
215
|
+
"expires_in" => 3600,
|
216
|
+
"expiration" => 1_524_167_011,
|
217
|
+
"refresh_token" => "jy4gl91BQ"
|
218
|
+
}
|
219
|
+
|
220
|
+
headers = {
|
221
|
+
"Content-Type" => "application/json"
|
222
|
+
}
|
223
|
+
stub_request(:post, "https://iam.bluemix.net/identity/token")
|
224
|
+
.with(
|
225
|
+
body: {
|
226
|
+
"apikey" => "xyz",
|
227
|
+
"grant_type" => "urn:ibm:params:oauth:grant-type:apikey",
|
228
|
+
"response_type" => "cloud_iam"
|
229
|
+
},
|
230
|
+
headers: {
|
231
|
+
"Accept" => "application/json",
|
232
|
+
"Authorization" => "Basic Yng6Yng=",
|
233
|
+
"Connection" => "close",
|
234
|
+
"Content-Type" => "application/x-www-form-urlencoded",
|
235
|
+
"Host" => "iam.bluemix.net",
|
236
|
+
"User-Agent" => "http.rb/4.1.1"
|
237
|
+
}
|
238
|
+
).to_return(status: 200, body: token_response.to_json, headers: {})
|
239
|
+
stub_request(:get, "https://we.the.best/music")
|
240
|
+
.with(
|
241
|
+
headers: {
|
242
|
+
"Authorization" => "Bearer oAeisG8yqPY7sFR_x66Z15",
|
243
|
+
"Host" => "we.the.best"
|
244
|
+
}
|
245
|
+
).to_return(status: 200, body: response.to_json, headers: headers)
|
246
|
+
service = IBMCloudSdkCore::BaseService.new(
|
247
|
+
url: "https://we.the.best",
|
248
|
+
username: "apikey",
|
249
|
+
password: "xyz"
|
250
|
+
)
|
251
|
+
service_response = service.request(method: "GET", url: "/music", headers: {})
|
252
|
+
assert_equal(response, service_response.result)
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_dummy_request_username_apikey_cred_file
|
256
|
+
response = {
|
257
|
+
"text" => "I want financial advice today.",
|
258
|
+
"created" => "2016-07-11T16:39:01.774Z",
|
259
|
+
"updated" => "2015-12-07T18:53:59.153Z"
|
260
|
+
}
|
261
|
+
token_response = {
|
262
|
+
"access_token" => "oAeisG8yqPY7sFR_x66Z15",
|
263
|
+
"token_type" => "Bearer",
|
264
|
+
"expires_in" => 3600,
|
265
|
+
"expiration" => 1_524_167_011,
|
266
|
+
"refresh_token" => "jy4gl91BQ"
|
267
|
+
}
|
268
|
+
|
269
|
+
headers = {
|
270
|
+
"Content-Type" => "application/json"
|
271
|
+
}
|
272
|
+
stub_request(:post, "https://iam.bluemix.net/identity/token")
|
273
|
+
.with(
|
274
|
+
body: {
|
275
|
+
"apikey" => "xyz",
|
276
|
+
"grant_type" => "urn:ibm:params:oauth:grant-type:apikey",
|
277
|
+
"response_type" => "cloud_iam"
|
278
|
+
},
|
279
|
+
headers: {
|
280
|
+
"Accept" => "application/json",
|
281
|
+
"Authorization" => "Basic Yng6Yng=",
|
282
|
+
"Connection" => "close",
|
283
|
+
"Content-Type" => "application/x-www-form-urlencoded",
|
284
|
+
"Host" => "iam.bluemix.net",
|
285
|
+
"User-Agent" => "http.rb/4.1.1"
|
286
|
+
}
|
287
|
+
).to_return(status: 200, body: token_response.to_json, headers: {})
|
288
|
+
stub_request(:get, "https://we.the.best/music")
|
289
|
+
.with(
|
290
|
+
headers: {
|
291
|
+
"Authorization" => "Bearer oAeisG8yqPY7sFR_x66Z15",
|
292
|
+
"Host" => "we.the.best"
|
293
|
+
}
|
294
|
+
).to_return(status: 200, body: response.to_json, headers: headers)
|
295
|
+
file_path = File.join(File.dirname(__FILE__), "../../resources/ibm-credentials.env")
|
296
|
+
ENV["IBM_CREDENTIALS_FILE"] = file_path
|
297
|
+
service = IBMCloudSdkCore::BaseService.new(
|
298
|
+
display_name: "ronaldo",
|
299
|
+
url: "https://we.the.best"
|
300
|
+
)
|
301
|
+
service_response = service.request(method: "GET", url: "/music", headers: {})
|
302
|
+
assert_equal(response, service_response.result)
|
303
|
+
end
|
304
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require("json")
|
4
|
+
require_relative("./../test_helper.rb")
|
5
|
+
require("webmock/minitest")
|
6
|
+
|
7
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
8
|
+
|
9
|
+
# Unit tests for the configure_http_client customizations, such as proxies and timeouts
|
10
|
+
class HTTPConfigTest < Minitest::Test
|
11
|
+
def test_proxy_address_port
|
12
|
+
service = IBMCloudSdkCore::BaseService.new(
|
13
|
+
version: "2018-03-16",
|
14
|
+
username: "username",
|
15
|
+
password: "password"
|
16
|
+
)
|
17
|
+
service.configure_http_client(
|
18
|
+
proxy: {
|
19
|
+
address: "bogus_address.com",
|
20
|
+
port: 9999
|
21
|
+
}
|
22
|
+
)
|
23
|
+
proxy = service.conn.default_options.proxy
|
24
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
25
|
+
assert_equal(9999, proxy[:proxy_port])
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_proxy_username_password
|
29
|
+
service = IBMCloudSdkCore::BaseService.new(
|
30
|
+
version: "2018-03-16",
|
31
|
+
username: "username",
|
32
|
+
password: "password"
|
33
|
+
)
|
34
|
+
service.configure_http_client(
|
35
|
+
proxy: {
|
36
|
+
address: "bogus_address.com",
|
37
|
+
port: 9999,
|
38
|
+
username: "username",
|
39
|
+
password: "password"
|
40
|
+
}
|
41
|
+
)
|
42
|
+
proxy = service.conn.default_options.proxy
|
43
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
44
|
+
assert_equal(9999, proxy[:proxy_port])
|
45
|
+
assert_equal("username", proxy[:proxy_username])
|
46
|
+
assert_equal("password", proxy[:proxy_password])
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_proxy_headers
|
50
|
+
service = IBMCloudSdkCore::BaseService.new(
|
51
|
+
version: "2018-03-16",
|
52
|
+
username: "username",
|
53
|
+
password: "password"
|
54
|
+
)
|
55
|
+
service.configure_http_client(
|
56
|
+
proxy: {
|
57
|
+
address: "bogus_address.com",
|
58
|
+
port: 9999,
|
59
|
+
headers: {
|
60
|
+
bogus_header: true
|
61
|
+
}
|
62
|
+
}
|
63
|
+
)
|
64
|
+
proxy = service.conn.default_options.proxy
|
65
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
66
|
+
assert_equal(9999, proxy[:proxy_port])
|
67
|
+
assert_equal({ bogus_header: true }, proxy[:proxy_headers])
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_proxy_username_password_headers
|
71
|
+
service = IBMCloudSdkCore::BaseService.new(
|
72
|
+
version: "2018-03-16",
|
73
|
+
username: "username",
|
74
|
+
password: "password"
|
75
|
+
)
|
76
|
+
service.configure_http_client(
|
77
|
+
proxy: {
|
78
|
+
address: "bogus_address.com",
|
79
|
+
port: 9999,
|
80
|
+
username: "username",
|
81
|
+
password: "password",
|
82
|
+
headers: {
|
83
|
+
bogus_header: true
|
84
|
+
}
|
85
|
+
}
|
86
|
+
)
|
87
|
+
proxy = service.conn.default_options.proxy
|
88
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
89
|
+
assert_equal(9999, proxy[:proxy_port])
|
90
|
+
assert_equal("username", proxy[:proxy_username])
|
91
|
+
assert_equal("password", proxy[:proxy_password])
|
92
|
+
assert_equal({ bogus_header: true }, proxy[:proxy_headers])
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_timeout_per_operation
|
96
|
+
service = IBMCloudSdkCore::BaseService.new(
|
97
|
+
version: "2018-03-16",
|
98
|
+
username: "username",
|
99
|
+
password: "password"
|
100
|
+
)
|
101
|
+
service.configure_http_client(
|
102
|
+
timeout: {
|
103
|
+
per_operation: {
|
104
|
+
read: 5,
|
105
|
+
write: 7,
|
106
|
+
connect: 10
|
107
|
+
}
|
108
|
+
}
|
109
|
+
)
|
110
|
+
timeout_class = service.conn.default_options.timeout_class
|
111
|
+
assert_equal(HTTP::Timeout::PerOperation, timeout_class)
|
112
|
+
|
113
|
+
expected_timeouts = {
|
114
|
+
read_timeout: 5,
|
115
|
+
write_timeout: 7,
|
116
|
+
connect_timeout: 10
|
117
|
+
}
|
118
|
+
timeout = service.conn.default_options.timeout_options
|
119
|
+
assert_equal(expected_timeouts, timeout)
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_timeout_global
|
123
|
+
service = IBMCloudSdkCore::BaseService.new(
|
124
|
+
version: "2018-03-16",
|
125
|
+
username: "username",
|
126
|
+
password: "password"
|
127
|
+
)
|
128
|
+
service.configure_http_client(
|
129
|
+
timeout: {
|
130
|
+
global: 20
|
131
|
+
}
|
132
|
+
)
|
133
|
+
timeout_class = service.conn.default_options.timeout_class
|
134
|
+
assert_equal(HTTP::Timeout::Global, timeout_class)
|
135
|
+
|
136
|
+
expected_timeouts = {
|
137
|
+
global_timeout: 20
|
138
|
+
}
|
139
|
+
timeout = service.conn.default_options.timeout_options
|
140
|
+
assert_equal(expected_timeouts, timeout)
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_disable_ssl_verification
|
144
|
+
service = IBMCloudSdkCore::BaseService.new(
|
145
|
+
version: "2018-03-16",
|
146
|
+
username: "username",
|
147
|
+
password: "password"
|
148
|
+
)
|
149
|
+
service.configure_http_client(disable_ssl_verification: true)
|
150
|
+
refute_nil(service.conn.default_options.ssl_context)
|
151
|
+
end
|
152
|
+
end
|