clx_api 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.yardopts +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +55 -0
- data/Rakefile +7 -0
- data/clx_api.gemspec +26 -0
- data/doc/CLX.html +305 -0
- data/doc/CLX/API.html +1491 -0
- data/doc/CLX/CLXAPIException.html +411 -0
- data/doc/CLX/CLXException.html +134 -0
- data/doc/CLX/HTTPAdapter.html +1294 -0
- data/doc/CLX/HTTPClient.html +1058 -0
- data/doc/ClxApi.html +141 -0
- data/doc/_index.html +161 -0
- data/doc/class_list.html +58 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +112 -0
- data/doc/file_list.html +60 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +112 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +181 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +279 -0
- data/doc/top-level-namespace.html +112 -0
- data/examples/get_gateway_by_id.rb +16 -0
- data/examples/get_gateways.rb +18 -0
- data/examples/get_operator_by_id.rb +21 -0
- data/examples/get_operators.rb +23 -0
- data/examples/get_price_entries_by_gateway_id.rb +19 -0
- data/examples/get_price_entries_by_gateway_id_and_operator_id.rb +17 -0
- data/examples/get_price_entries_by_gateway_id_and_operator_id_and_date.rb +18 -0
- data/examples/readme.md +167 -0
- data/lib/clx_api.rb +35 -0
- data/lib/clx_api/api.rb +132 -0
- data/lib/clx_api/exceptions/clx_api_exception.rb +25 -0
- data/lib/clx_api/exceptions/clx_exception.rb +8 -0
- data/lib/clx_api/http_adapter.rb +129 -0
- data/lib/clx_api/http_client.rb +163 -0
- data/lib/clx_api/version.rb +4 -0
- data/test/adapter/test_adapter.rb +67 -0
- data/test/api_test.rb +306 -0
- data/test/http_adapter_test.rb +211 -0
- data/test/http_client_test.rb +173 -0
- data/test/test_helper.rb +7 -0
- metadata +168 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module CLX
|
5
|
+
|
6
|
+
#HTTP Adapter class for making RESTful HTTP-requests
|
7
|
+
class TestAdapter
|
8
|
+
|
9
|
+
# @!attribute [r]
|
10
|
+
attr_accessor :response
|
11
|
+
|
12
|
+
# @!attribute [r]
|
13
|
+
attr_accessor :request_url
|
14
|
+
|
15
|
+
# @!attribute [r]
|
16
|
+
attr_accessor :request_method
|
17
|
+
|
18
|
+
# @!attribute [r]
|
19
|
+
attr_reader :username
|
20
|
+
|
21
|
+
# @!attribute [r]
|
22
|
+
attr_reader :password
|
23
|
+
|
24
|
+
# Set credentials for basic auth
|
25
|
+
def set_auth(username, password)
|
26
|
+
raise CLXException, 'Username must be a string' unless username.is_a? String
|
27
|
+
raise CLXException, 'Password must be a string' unless password.is_a? String
|
28
|
+
raise CLXException, 'Username can not be an empty string' unless username.length > 0
|
29
|
+
raise CLXException, 'Password can not be an empty string' unless password.length > 0
|
30
|
+
|
31
|
+
@username = username
|
32
|
+
@password = password
|
33
|
+
end
|
34
|
+
|
35
|
+
# GET-request
|
36
|
+
def get(uri)
|
37
|
+
return execute('get', uri)
|
38
|
+
end
|
39
|
+
|
40
|
+
# POST-request
|
41
|
+
def post(uri, data)
|
42
|
+
return execute('post', uri, data)
|
43
|
+
end
|
44
|
+
|
45
|
+
# PUT-request
|
46
|
+
def put(uri, data)
|
47
|
+
return execute('put', uri, data)
|
48
|
+
end
|
49
|
+
|
50
|
+
# DELETE-request
|
51
|
+
def delete(uri)
|
52
|
+
return execute('delete', uri)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
# Execute request
|
58
|
+
def execute(method, uri, data = nil)
|
59
|
+
|
60
|
+
@request_url = uri.to_s
|
61
|
+
@request_method = method.upcase
|
62
|
+
return @response
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
data/test/api_test.rb
ADDED
@@ -0,0 +1,306 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class APITest < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
http_adapter = CLX::TestAdapter.new
|
7
|
+
@api = CLX::API.new 'username', 'password', http_adapter
|
8
|
+
end
|
9
|
+
|
10
|
+
# Initializer
|
11
|
+
def test_that_object_is_of_correct_instance
|
12
|
+
assert_instance_of CLX::API, @api
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_initializer_without_arguments_raises_error
|
16
|
+
assert_raises ArgumentError do
|
17
|
+
CLX::API.new
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_initializer_with_too_few_arguments_raises_error
|
22
|
+
assert_raises ArgumentError do
|
23
|
+
CLX::API.new 'username'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_initializer_with_too_many_arguments_raises_error
|
28
|
+
assert_raises ArgumentError do
|
29
|
+
CLX::API.new 'username', 'password', nil, 'one_argument_too_much'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_initializer_argument_username_not_string_raises_CLX_exception
|
34
|
+
assert_raises CLX::CLXException do
|
35
|
+
CLX::API.new 1, 'a_password'
|
36
|
+
end
|
37
|
+
|
38
|
+
assert_raises CLX::CLXException do
|
39
|
+
@user = {username: 'a_username'}
|
40
|
+
CLX::API.new @user, 'a_password'
|
41
|
+
end
|
42
|
+
|
43
|
+
assert_raises CLX::CLXException do
|
44
|
+
CLX::API.new nil, 'a_password'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_initializer_argument_password_not_string_raises_CLX_exception
|
49
|
+
assert_raises CLX::CLXException do
|
50
|
+
CLX::API.new 'a_username', 1
|
51
|
+
end
|
52
|
+
|
53
|
+
assert_raises CLX::CLXException do
|
54
|
+
@password = {password: 'a_password'}
|
55
|
+
CLX::API.new 'a_username', @password
|
56
|
+
end
|
57
|
+
|
58
|
+
assert_raises CLX::CLXException do
|
59
|
+
CLX::API.new 'a_username', nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
#Public setter methods
|
64
|
+
def test_setting_auth_credentials_works
|
65
|
+
adapter = @api.http_client.http_adapter
|
66
|
+
@api.set_auth('new_username', 'new_password')
|
67
|
+
assert_equal adapter.username, 'new_username'
|
68
|
+
assert_equal adapter.password, 'new_password'
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_setting_base_url_works
|
72
|
+
client = @api.http_client
|
73
|
+
@api.set_base_url('http://new.url')
|
74
|
+
assert_equal client.base_url, 'http://new.url'
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_request_with_invalid_username_and_password_raises_CLX_exception
|
78
|
+
@api.set_auth('wrong_username', 'wrong_password')
|
79
|
+
response = OpenStruct.new(
|
80
|
+
body: '{}',
|
81
|
+
code: 401
|
82
|
+
)
|
83
|
+
@api.http_client.http_adapter.response = response
|
84
|
+
|
85
|
+
assert_raises CLX::CLXAPIException do
|
86
|
+
result = @api.get_operators
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
#Operator tests
|
91
|
+
def test_get_operators_returns_list_of_operators
|
92
|
+
response = OpenStruct.new(
|
93
|
+
body: '[
|
94
|
+
{"id":1,"name":"Foo","network":"Foonetwork","uniqueName":"Foo uniquq","isoCountryCode":"8","operationalState":"active","operationalStatDate":"-0001-11-30 00:00:00","numberOfSubscribers":0},
|
95
|
+
{"id":1058,"name":"Bar mobile","network":"Bar Mobile","uniqueName":"Foo Mobile-unique","isoCountryCode":"8","operationalState":"active","operationalStatDate":"-0001-11-30 00:00:00","numberOfSubscribers":0}
|
96
|
+
]',
|
97
|
+
code: 200
|
98
|
+
)
|
99
|
+
@api.http_client.http_adapter.response = response
|
100
|
+
|
101
|
+
result = @api.get_operators
|
102
|
+
|
103
|
+
refute_nil result
|
104
|
+
refute_empty result
|
105
|
+
assert_equal(result.size, 2)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_get_operator_by_id_returns_single_operator
|
109
|
+
response = OpenStruct.new(
|
110
|
+
body: '{"id":1,"name":"Foo","network":"Foonetwork","uniqueName":"Foo uniquq","isoCountryCode":"8","operationalState":"active","operationalStatDate":"-0001-11-30 00:00:00","numberOfSubscribers":0}',
|
111
|
+
code: 200
|
112
|
+
)
|
113
|
+
@api.http_client.http_adapter.response = response
|
114
|
+
|
115
|
+
operator = @api.get_operator_by_id(1)
|
116
|
+
|
117
|
+
assert_equal operator.id, 1
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_get_operator_by_id_with_non_existing_id_raises_CLX_exception_with_status_code_404
|
121
|
+
response = OpenStruct.new(
|
122
|
+
body: '{"error":{"message": "No operator with id: 9999", "code": 3001}}',
|
123
|
+
code: 404
|
124
|
+
)
|
125
|
+
@api.http_client.http_adapter.response = response
|
126
|
+
|
127
|
+
err = assert_raises CLX::CLXAPIException do
|
128
|
+
operator = @api.get_operator_by_id(9999)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_get_operator_by_id_with_non_integer_parameter_raises_CLX_exception
|
133
|
+
assert_raises CLX::CLXException do
|
134
|
+
operator = @api.get_operator_by_id('asd')
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_get_operator_by_id_with_invalid_username_and_password_raises_CLX_exception
|
139
|
+
@api.set_auth('wrong_username', 'wrong_password')
|
140
|
+
response = OpenStruct.new(
|
141
|
+
body: '{}',
|
142
|
+
code: 401
|
143
|
+
)
|
144
|
+
@api.http_client.http_adapter.response = response
|
145
|
+
assert_raises CLX::CLXAPIException do
|
146
|
+
result = @api.get_operator_by_id(1)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
#Gateway tests
|
151
|
+
def test_that_get_gateways_return_a_collection_of_gateways
|
152
|
+
response = OpenStruct.new(
|
153
|
+
body: '[
|
154
|
+
{"id":1,"name":"gateway no 1","type":"Some type 1"},
|
155
|
+
{"id":2,"name":"gateway no 2","type":"Some type 2"}
|
156
|
+
]',
|
157
|
+
code: 200
|
158
|
+
)
|
159
|
+
@api.http_client.http_adapter.response = response
|
160
|
+
|
161
|
+
result = @api.get_gateways
|
162
|
+
|
163
|
+
refute_nil result
|
164
|
+
refute_empty result
|
165
|
+
assert_equal(result.size, 2)
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_that_get_gateway_by_id_returns_single_gateway
|
169
|
+
response = OpenStruct.new(
|
170
|
+
body: '{"id":1,"name":"gateway no 1","type":"Some type 1"}',
|
171
|
+
code: 200
|
172
|
+
)
|
173
|
+
@api.http_client.http_adapter.response = response
|
174
|
+
|
175
|
+
gateway = @api.get_gateway_by_id(1)
|
176
|
+
|
177
|
+
assert_equal gateway.id, 1
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_that_get_gateway_by_by_with_id_that_does_not_exist_raises_clx_api_exception
|
181
|
+
response = OpenStruct.new(
|
182
|
+
body: '{"error":{"message": "No gateway with id: 9999"}}',
|
183
|
+
code: 404
|
184
|
+
)
|
185
|
+
@api.http_client.http_adapter.response = response
|
186
|
+
|
187
|
+
assert_raises CLX::CLXAPIException do
|
188
|
+
gateway = @api.get_gateway_by_id(9999)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_that_get_gateway_by_id_with_non_integer_id_raises_clx_exception
|
193
|
+
assert_raises CLX::CLXException do
|
194
|
+
gateway = @api.get_gateway_by_id('a string')
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def test_that_get_price_entires_by_gateway_id_return_collection_of_price_entires
|
199
|
+
response = OpenStruct.new(
|
200
|
+
body: '[
|
201
|
+
{"price": 0.25,"gateway":"gateway no 1","operator":"Some operator 1"},
|
202
|
+
{"price": 0.35,"gateway":"gateway no 1","operator":"Some operator 2"}
|
203
|
+
]',
|
204
|
+
code: 200
|
205
|
+
)
|
206
|
+
@api.http_client.http_adapter.response = response
|
207
|
+
|
208
|
+
result = @api.get_price_entires_by_gateway_id(1)
|
209
|
+
|
210
|
+
refute_nil result
|
211
|
+
refute_empty result
|
212
|
+
assert_equal(result.size, 2)
|
213
|
+
end
|
214
|
+
|
215
|
+
def test_that_get_price_entires_by_gateway_id_with_id_that_does_not_exist_raises_clx_api_exception
|
216
|
+
response = OpenStruct.new(
|
217
|
+
body: '{"error":{"message": "No gateway with id: 9999"}}',
|
218
|
+
code: 404
|
219
|
+
)
|
220
|
+
@api.http_client.http_adapter.response = response
|
221
|
+
|
222
|
+
assert_raises CLX::CLXAPIException do
|
223
|
+
result = @api.get_price_entires_by_gateway_id(9999)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_that_get_price_entries_by_gateway_id_with_non_integer_id_raises_clx_exception
|
228
|
+
assert_raises CLX::CLXException do
|
229
|
+
gateway = @api.get_price_entires_by_gateway_id('a string')
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_that_get_price_entry_by_gateway_id_and_operator_id_returns_price_entry
|
234
|
+
response = OpenStruct.new(
|
235
|
+
body: '{"price": "0.25","gateway": "gateway_1","operator": "Some operator","expireDate": 0}',
|
236
|
+
code: 200
|
237
|
+
)
|
238
|
+
@api.http_client.http_adapter.response = response
|
239
|
+
|
240
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id(1, 1)
|
241
|
+
|
242
|
+
assert_equal gateway.gateway, "gateway_1"
|
243
|
+
end
|
244
|
+
|
245
|
+
def test_that_get_price_entries_by_gateway_id_and_operator_id_with_non_integer_ids_raises_clx_exception
|
246
|
+
assert_raises CLX::CLXException do
|
247
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id('a string', 1)
|
248
|
+
end
|
249
|
+
assert_raises CLX::CLXException do
|
250
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id(1, 'a string')
|
251
|
+
end
|
252
|
+
assert_raises CLX::CLXException do
|
253
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id('a string', 'a string')
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
def test_that_get_price_entry_by_gateway_id_and_operator_id_and_date_returns_price_entry
|
258
|
+
response = OpenStruct.new(
|
259
|
+
body: '{"price": "0.25","gateway": "gateway_1","operator": "Some operator","expireDate": 0}',
|
260
|
+
code: 200
|
261
|
+
)
|
262
|
+
@api.http_client.http_adapter.response = response
|
263
|
+
|
264
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id_and_date(1, 1, DateTime.now)
|
265
|
+
|
266
|
+
assert_equal gateway.gateway, "gateway_1"
|
267
|
+
end
|
268
|
+
|
269
|
+
def test_that_get_price_entry_by_gateway_id_and_operator_id_and_date_with_ids_that_does_not_exist_raises_clx_api_exception
|
270
|
+
response = OpenStruct.new(
|
271
|
+
body: '{"error":{"message": "No gateway with id: 9999"}}',
|
272
|
+
code: 404
|
273
|
+
)
|
274
|
+
@api.http_client.http_adapter.response = response
|
275
|
+
|
276
|
+
assert_raises CLX::CLXAPIException do
|
277
|
+
result = @api.get_price_entries_by_gateway_id_and_operator_id_and_date(9999, 1, DateTime.now)
|
278
|
+
end
|
279
|
+
|
280
|
+
response = OpenStruct.new(
|
281
|
+
body: '{"error":{"message": "Trying to get current and next price: PriceLinkedList missing for operator with id: 9999 in pirce list with id: 1", "code": 1002}}',
|
282
|
+
code: 404
|
283
|
+
)
|
284
|
+
@api.http_client.http_adapter.response = response
|
285
|
+
|
286
|
+
assert_raises CLX::CLXAPIException do
|
287
|
+
result = @api.get_price_entries_by_gateway_id_and_operator_id_and_date(1, 9999, DateTime.now)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
def test_that_get_price_entry_by_gateway_id_and_operator_id_and_date_with_invalid_parameters_raises_clx_exception
|
292
|
+
assert_raises CLX::CLXException do
|
293
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id_and_date('a string', 1, DateTime.now)
|
294
|
+
end
|
295
|
+
assert_raises CLX::CLXException do
|
296
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id_and_date(1, 'a string', DateTime.now)
|
297
|
+
end
|
298
|
+
assert_raises CLX::CLXException do
|
299
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id_and_date('a string', 'a string', DateTime.now)
|
300
|
+
end
|
301
|
+
assert_raises CLX::CLXException do
|
302
|
+
gateway = @api.get_price_entries_by_gateway_id_and_operator_id_and_date(1, 1, 'should_be_datetime')
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
end
|
@@ -0,0 +1,211 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class HTTPAdapterTest < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@https_url = 'https://httpbin.org'
|
7
|
+
@http_url = 'http://httpbin.org'
|
8
|
+
@http_adapter = CLX::HTTPAdapter.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initializer
|
12
|
+
assert_instance_of CLX::HTTPAdapter, @http_adapter
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_set_auth_method_set_username_and_password
|
16
|
+
@http_adapter.set_auth('new_username', 'new_password')
|
17
|
+
assert_equal @http_adapter.username, 'new_username'
|
18
|
+
assert_equal @http_adapter.password, 'new_password'
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_set_auth_only_accepts_non_empty_strings
|
22
|
+
assert_raises CLX::CLXException do
|
23
|
+
@http_adapter.set_auth(1, 1)
|
24
|
+
end
|
25
|
+
assert_raises CLX::CLXException do
|
26
|
+
@http_adapter.set_auth('', '')
|
27
|
+
end
|
28
|
+
assert_raises CLX::CLXException do
|
29
|
+
@http_adapter.set_auth({username: 'username'}, password: 'password')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_basic_auth_via_https_get_returns_http_ok
|
34
|
+
@http_adapter.set_auth('user', 'pass')
|
35
|
+
uri = URI(@https_url + '/basic-auth/user/pass')
|
36
|
+
response = @http_adapter.get(uri)
|
37
|
+
assert_instance_of Net::HTTPOK, response
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_basic_auth_via_http_get_returns_http_ok
|
41
|
+
@http_adapter.set_auth('user', 'pass')
|
42
|
+
uri = URI(@http_url + '/basic-auth/user/pass')
|
43
|
+
response = @http_adapter.get(uri)
|
44
|
+
assert_instance_of Net::HTTPOK, response
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_basic_auth_with_incorrect_credentials_via_https_returns_http_unauthorized
|
48
|
+
@http_adapter.set_auth('wrong_username', 'wrong_password')
|
49
|
+
uri = URI(@https_url + '/basic-auth/user/passwd')
|
50
|
+
response = @http_adapter.get(uri)
|
51
|
+
assert_instance_of Net::HTTPUnauthorized, response
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_basic_auth_with_incorrect_credentials_via_http_returns_http_unauthorized
|
55
|
+
@http_adapter.set_auth('wrong_username', 'wrong_password')
|
56
|
+
uri = URI(@http_url + '/basic-auth/user/passwd')
|
57
|
+
response = @http_adapter.get(uri)
|
58
|
+
assert_instance_of Net::HTTPUnauthorized, response
|
59
|
+
end
|
60
|
+
|
61
|
+
# GET method
|
62
|
+
def test_get_with_no_arguments_raises_argument_error
|
63
|
+
assert_raises ArgumentError do
|
64
|
+
@http_adapter.get()
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_get_with_too_many_arguments_raises_argument_error
|
69
|
+
assert_raises ArgumentError do
|
70
|
+
uri = URI(@https_url + '/get')
|
71
|
+
@http_adapter.get(uri, 'too_many_arguments')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_http_methods_only_accepts_uri_object_as_first_argument
|
76
|
+
assert_raises CLX::CLXException do
|
77
|
+
@http_adapter.get(123)
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_raises CLX::CLXException do
|
81
|
+
@http_adapter.get('')
|
82
|
+
end
|
83
|
+
|
84
|
+
assert_raises CLX::CLXException do
|
85
|
+
@http_adapter.get({key: 'value'})
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_https_get_request_with_valid_url_returns_http_ok
|
90
|
+
uri = URI(@https_url + '/get')
|
91
|
+
response = @http_adapter.get(uri)
|
92
|
+
assert_instance_of Net::HTTPOK, response
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_http_get_request_with_valid_url_returns_http_ok
|
96
|
+
uri = URI(@http_url + '/get')
|
97
|
+
response = @http_adapter.get(uri)
|
98
|
+
assert_instance_of Net::HTTPOK, response
|
99
|
+
end
|
100
|
+
|
101
|
+
# POST
|
102
|
+
|
103
|
+
def test_post_with_no_arguments_raises_argument_error
|
104
|
+
assert_raises ArgumentError do
|
105
|
+
@http_adapter.post()
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_post_without_data_argument_raises_argument_error
|
110
|
+
assert_raises ArgumentError do
|
111
|
+
uri = URI(@https_url)
|
112
|
+
@http_adapter.post(uri)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_post_with_too_many_arguments_raises_argument_error
|
117
|
+
assert_raises ArgumentError do
|
118
|
+
uri = URI(@https_url + '/post')
|
119
|
+
@http_adapter.post(uri, {data: 1}, 'too_many_arguments')
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_https_post_request_with_valid_url_returns_http_ok
|
124
|
+
uri = URI(@https_url + '/post')
|
125
|
+
response = @http_adapter.post(uri, {data: 1})
|
126
|
+
response_types = [Net::HTTPOK, Net::HTTPCreated]
|
127
|
+
assert_includes response_types, response.class
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_http_post_request_with_valid_url_returns_http_ok
|
131
|
+
uri = URI(@http_url + '/post')
|
132
|
+
response = @http_adapter.post(uri, {data: 1})
|
133
|
+
response_types = [Net::HTTPOK, Net::HTTPCreated]
|
134
|
+
assert_includes response_types, response.class
|
135
|
+
end
|
136
|
+
|
137
|
+
# PUT
|
138
|
+
def test_put_with_no_arguments_should_raise_argument_error
|
139
|
+
assert_raises ArgumentError do
|
140
|
+
@http_adapter.put()
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_put_without_data_argument_should_raise_argument_error
|
145
|
+
assert_raises ArgumentError do
|
146
|
+
uri = URI(@https_url + '/put')
|
147
|
+
@http_adapter.put(uri)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_put_with_too_many_arguments_raises_argument_error
|
152
|
+
assert_raises ArgumentError do
|
153
|
+
uri = URI(@https_url + '/put')
|
154
|
+
@http_adapter.put(uri, {data: 1}, 'too_many_arguments')
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_https_put_request_with_valid_url_returns_http_ok
|
159
|
+
uri = URI(@https_url + '/put')
|
160
|
+
response = @http_adapter.put(uri, {data: 1})
|
161
|
+
assert_instance_of Net::HTTPOK, response
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_http_put_request_with_valid_url_returns_http_ok
|
165
|
+
uri = URI(@http_url + '/put')
|
166
|
+
response = @http_adapter.put(uri, {data: 1})
|
167
|
+
assert_instance_of Net::HTTPOK, response
|
168
|
+
end
|
169
|
+
|
170
|
+
# DELETE
|
171
|
+
def test_delete_without_argument_should_raise_argument_error
|
172
|
+
assert_raises ArgumentError do
|
173
|
+
@http_adapter.delete()
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def test_delete_with_too_many_arguments_should_raise_argument_error
|
178
|
+
assert_raises ArgumentError do
|
179
|
+
uri = URI(@https_url + '/delete')
|
180
|
+
@http_adapter.delete(uri, 'too_many_arguments')
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def test_https_delete_request_with_valid_url_returns_http_ok
|
185
|
+
uri = URI(@https_url + '/delete')
|
186
|
+
response = @http_adapter.delete(uri)
|
187
|
+
response_types = [Net::HTTPOK, Net::HTTPNoContent]
|
188
|
+
assert_includes response_types, response.class
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_http_delete_request_with_valid_url_returns_http_ok
|
192
|
+
uri = URI(@http_url + '/delete')
|
193
|
+
response = @http_adapter.delete(uri)
|
194
|
+
response_types = [Net::HTTPOK, Net::HTTPNoContent]
|
195
|
+
assert_includes response_types, response.class
|
196
|
+
end
|
197
|
+
|
198
|
+
# Manipulated adapter
|
199
|
+
def test_manipulated_adapter_with_invlaid_http_method_raises_clx_exception
|
200
|
+
def @http_adapter.fake_method(uri)
|
201
|
+
execute('FAKE_HTTP_METHOD', uri)
|
202
|
+
end
|
203
|
+
|
204
|
+
assert_raises CLX::CLXException do
|
205
|
+
uri = URI(@https_url + '/get')
|
206
|
+
response = @http_adapter.fake_method(uri)
|
207
|
+
end
|
208
|
+
|
209
|
+
end
|
210
|
+
|
211
|
+
end
|