aviator 0.0.2 → 0.0.3
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.
- data/README.md +9 -1
- data/aviator.gemspec +1 -1
- data/bin/aviator +6 -86
- data/lib/aviator/core/cli/describer.rb +95 -0
- data/lib/aviator/core/cli.rb +1 -0
- data/lib/aviator/core/request.rb +62 -65
- data/lib/aviator/core/service.rb +26 -41
- data/lib/aviator/core/session.rb +7 -0
- data/lib/aviator/core.rb +1 -0
- data/lib/aviator/openstack/compute/v2/public/list_images.rb +51 -42
- data/lib/aviator/openstack/compute/v2/public/list_servers.rb +58 -0
- data/lib/aviator/openstack/identity/v2/admin/create_tenant.rb +43 -32
- data/lib/aviator/openstack/identity/v2/admin/list_tenants.rb +49 -38
- data/lib/aviator/openstack/identity/v2/public/create_token.rb +53 -47
- data/lib/aviator/openstack/identity/v2/public/list_tenants.rb +36 -26
- data/lib/aviator/version.rb +1 -1
- data/lib/aviator.rb +1 -0
- data/test/aviator/core/cli/describer_test.rb +140 -0
- data/test/aviator/core/request_test.rb +132 -157
- data/test/aviator/core/service_test.rb +49 -26
- data/test/aviator/core/session_test.rb +29 -0
- data/test/aviator/openstack/compute/v2/public/list_images_test.rb +16 -18
- data/test/aviator/openstack/compute/v2/public/list_servers_test.rb +178 -0
- data/test/aviator/openstack/identity/v2/admin/create_tenant_test.rb +10 -12
- data/test/aviator/openstack/identity/v2/public/create_token_test.rb +12 -14
- data/test/cassettes/core/service/i_default_session_data_/sets_the_service_s_default_session_data.yml +1 -1
- data/test/cassettes/core/service/i_request/accepts_an_endpoint_type_option_for_selecting_a_specific_request.yml +1 -1
- data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_bootstrapped_session_data.yml +1 -1
- data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_non-bootstrapped_session_data.yml +1 -1
- data/test/cassettes/core/service/i_request/can_find_the_correct_request_if_api_version_is_not_defined_but_can_be_inferred_from_host_uri.yml +1 -1
- data/test/cassettes/core/service/i_request/uses_the_default_session_data_if_session_data_is_not_provided.yml +1 -1
- data/test/cassettes/core/session/c_load/creates_a_new_instance_from_the_given_session_dump.yml +1 -1
- data/test/cassettes/core/session/c_load/uses_the_loaded_auth_info_for_its_services.yml +1 -1
- data/test/cassettes/core/session/c_new/directs_log_entries_to_the_given_log_file.yml +1 -1
- data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_indicated_in_the_config_file.yml +1 -1
- data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_using_the_credentials_in_the_given_block.yml +1 -1
- data/test/cassettes/core/session/i_authenticate/updates_the_session_data_of_its_service_objects.yml +2 -2
- data/test/cassettes/core/session/i_dump/serializes_the_session_data_for_caching.yml +1 -1
- data/test/cassettes/core/session/i_load/returns_itself.yml +63 -0
- data/test/cassettes/core/session/i_load/updates_the_session_data_of_its_service_objects.yml +123 -0
- data/test/cassettes/core/session/i_validate/returns_false_if_session_is_no_longer_valid.yml +1 -1
- data/test/cassettes/core/session/i_validate/returns_true_if_session_is_still_valid.yml +1 -1
- data/test/cassettes/core/session/i_xxx_service/returns_an_instance_of_the_indicated_service.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_invalid.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_valid.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body_.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers_.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_http_method_.yml +63 -0
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url_.yml +1 -1
- data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_no_parameters_are_provided.yml +101 -0
- data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_parameters_are_invalid.yml +95 -0
- data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_parameters_are_valid.yml +109 -0
- data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_url_.yml +62 -0
- data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_invalid.yml +1 -1
- data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_valid.yml +1 -1
- data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_provided_with_invalid_params.yml +1 -1
- data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_valid.yml +1 -1
- data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_provided_with_a_token.yml +2 -2
- data/test/support/{openstack_request_test_helper.rb → request_helper.rb} +21 -2
- data/test/support/test_base_class.rb +1 -1
- data/test/support/test_reporter.rb +4 -2
- data/test/support/vcr_setup.rb +4 -0
- data/test/test_helper.rb +5 -1
- metadata +38 -10
@@ -8,13 +8,13 @@ class Aviator::Test
|
|
8
8
|
|
9
9
|
it 'raises an error when a required param is not provided' do
|
10
10
|
klass = Class.new(Aviator::Request) do
|
11
|
-
|
11
|
+
param :someparamname, required: true
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
the_method = lambda { klass.new }
|
15
|
+
the_method.must_raise ArgumentError
|
16
16
|
|
17
|
-
error =
|
17
|
+
error = the_method.call rescue $!
|
18
18
|
|
19
19
|
error.message.wont_be_nil
|
20
20
|
error.message.must_include "someparamname"
|
@@ -23,11 +23,9 @@ class Aviator::Test
|
|
23
23
|
|
24
24
|
it 'does not raise any error when the required param is provided' do
|
25
25
|
klass = Class.new(Aviator::Request) do
|
26
|
-
|
26
|
+
param :someparamname, required: true
|
27
27
|
end
|
28
|
-
|
29
|
-
# obj = klass.new({ someparamname: 'someparamvalue' })
|
30
|
-
|
28
|
+
|
31
29
|
obj = klass.new do |params|
|
32
30
|
params.someparamname = 'something'
|
33
31
|
end
|
@@ -37,173 +35,160 @@ class Aviator::Test
|
|
37
35
|
|
38
36
|
|
39
37
|
describe '::anonymous?' do
|
40
|
-
|
38
|
+
|
41
39
|
it 'is false by default' do
|
42
40
|
klass = Class.new(Aviator::Request)
|
43
|
-
|
41
|
+
|
44
42
|
klass.anonymous?.must_equal false
|
45
43
|
end
|
46
|
-
|
47
|
-
|
44
|
+
|
45
|
+
|
48
46
|
it 'returns true if specified as such' do
|
49
47
|
klass = Class.new(Aviator::Request) do
|
50
|
-
anonymous
|
48
|
+
meta :anonymous, true
|
51
49
|
end
|
52
|
-
|
50
|
+
|
53
51
|
klass.anonymous?.must_equal true
|
54
52
|
end
|
55
|
-
|
53
|
+
|
56
54
|
end
|
57
|
-
|
58
|
-
|
55
|
+
|
56
|
+
|
59
57
|
describe '#anonymous?' do
|
60
|
-
|
58
|
+
|
61
59
|
it 'is false by default' do
|
62
60
|
klass = Class.new(Aviator::Request)
|
63
|
-
|
61
|
+
|
64
62
|
klass.new.anonymous?.must_equal false
|
65
63
|
end
|
66
|
-
|
67
|
-
|
64
|
+
|
65
|
+
|
68
66
|
it 'returns true if specified as such' do
|
69
67
|
klass = Class.new(Aviator::Request) do
|
70
|
-
anonymous
|
68
|
+
meta :anonymous, true
|
71
69
|
end
|
72
|
-
|
70
|
+
|
73
71
|
klass.new.anonymous?.must_equal true
|
74
72
|
end
|
75
|
-
|
73
|
+
|
76
74
|
end
|
77
|
-
|
78
|
-
|
75
|
+
|
76
|
+
|
79
77
|
describe '::api_version' do
|
80
|
-
|
78
|
+
|
81
79
|
it 'returns the api version' do
|
82
80
|
klass = Class.new(Aviator::Request) do
|
83
|
-
api_version :v2
|
81
|
+
meta :api_version, :v2
|
84
82
|
end
|
85
|
-
|
83
|
+
|
86
84
|
klass.api_version.must_equal :v2
|
87
85
|
end
|
88
|
-
|
86
|
+
|
89
87
|
end
|
90
|
-
|
91
|
-
|
88
|
+
|
89
|
+
|
92
90
|
describe '#api_version' do
|
93
|
-
|
91
|
+
|
94
92
|
it 'returns the api version' do
|
95
93
|
klass = Class.new(Aviator::Request) do
|
96
|
-
api_version :v2
|
94
|
+
meta :api_version, :v2
|
97
95
|
end
|
98
|
-
|
96
|
+
|
99
97
|
klass.new.api_version.must_equal :v2
|
100
98
|
end
|
101
|
-
|
99
|
+
|
102
100
|
end
|
103
|
-
|
104
|
-
|
101
|
+
|
102
|
+
|
105
103
|
describe '::body?' do
|
106
|
-
|
104
|
+
|
107
105
|
it 'returns false if the body method is not defined' do
|
108
106
|
klass = Class.new(Aviator::Request)
|
109
|
-
|
107
|
+
|
110
108
|
klass.body?.must_equal false
|
111
109
|
end
|
112
|
-
|
113
|
-
|
110
|
+
|
111
|
+
|
114
112
|
it 'returns true if the body method is defined' do
|
115
113
|
klass = Class.new(Aviator::Request) do
|
116
114
|
def body; end
|
117
115
|
end
|
118
|
-
|
116
|
+
|
119
117
|
klass.body?.must_equal true
|
120
118
|
end
|
121
|
-
|
119
|
+
|
122
120
|
end
|
123
|
-
|
124
|
-
|
121
|
+
|
122
|
+
|
125
123
|
describe '#body?' do
|
126
|
-
|
124
|
+
|
127
125
|
it 'returns false if the body method is not defined' do
|
128
126
|
klass = Class.new(Aviator::Request)
|
129
|
-
|
127
|
+
|
130
128
|
klass.new.body?.must_equal false
|
131
129
|
end
|
132
|
-
|
133
|
-
|
130
|
+
|
131
|
+
|
134
132
|
it 'returns true if the body method is defined' do
|
135
133
|
klass = Class.new(Aviator::Request) do
|
136
134
|
def body; end
|
137
135
|
end
|
138
|
-
|
136
|
+
|
139
137
|
klass.new.body?.must_equal true
|
140
138
|
end
|
141
|
-
|
139
|
+
|
142
140
|
end
|
143
|
-
|
144
|
-
|
141
|
+
|
142
|
+
|
145
143
|
describe '::endpoint_type' do
|
146
|
-
|
144
|
+
|
147
145
|
it 'returns the endpoint type' do
|
148
146
|
klass = Class.new(Aviator::Request) do
|
149
|
-
endpoint_type :public
|
147
|
+
meta :endpoint_type, :public
|
150
148
|
end
|
151
|
-
|
149
|
+
|
152
150
|
klass.endpoint_type.must_equal :public
|
153
151
|
end
|
154
|
-
|
152
|
+
|
155
153
|
end
|
156
|
-
|
157
|
-
|
154
|
+
|
155
|
+
|
158
156
|
describe '#endpoint_type' do
|
159
|
-
|
157
|
+
|
160
158
|
it 'returns the endpoint type' do
|
161
159
|
klass = Class.new(Aviator::Request) do
|
162
|
-
endpoint_type :
|
160
|
+
meta :endpoint_type, :whatever
|
163
161
|
end
|
164
|
-
|
165
|
-
klass.new.endpoint_type.must_equal :
|
166
|
-
end
|
167
|
-
|
168
|
-
end
|
169
|
-
|
170
|
-
|
171
|
-
describe '::http_method' do
|
172
|
-
|
173
|
-
it 'returns the http method if it is defined' do
|
174
|
-
klass = Class.new(Aviator::Request) do
|
175
|
-
http_method :post
|
176
|
-
end
|
177
|
-
|
178
|
-
klass.http_method.must_equal :post
|
162
|
+
|
163
|
+
klass.new.endpoint_type.must_equal :whatever
|
179
164
|
end
|
180
|
-
|
165
|
+
|
181
166
|
end
|
182
|
-
|
183
|
-
|
167
|
+
|
168
|
+
|
184
169
|
describe '#http_method' do
|
185
|
-
|
170
|
+
|
186
171
|
it 'returns the http method if it is defined' do
|
187
172
|
klass = Class.new(Aviator::Request) do
|
188
|
-
http_method :post
|
173
|
+
def http_method; :post; end
|
189
174
|
end
|
190
|
-
|
175
|
+
|
191
176
|
klass.new.http_method.must_equal :post
|
192
177
|
end
|
193
|
-
|
178
|
+
|
194
179
|
end
|
195
|
-
|
196
|
-
|
197
|
-
describe '::
|
198
|
-
|
180
|
+
|
181
|
+
|
182
|
+
describe '::link' do
|
183
|
+
|
199
184
|
it 'adds a link to Request::links' do
|
200
185
|
rel = 'documentation'
|
201
186
|
href = 'http://x.y.z'
|
202
187
|
|
203
188
|
klass = Class.new(Aviator::Request) do
|
204
|
-
|
189
|
+
link rel, href
|
205
190
|
end
|
206
|
-
|
191
|
+
|
207
192
|
expected = [
|
208
193
|
{ rel: rel, href: href }
|
209
194
|
]
|
@@ -211,129 +196,119 @@ class Aviator::Test
|
|
211
196
|
klass.links.must_equal expected
|
212
197
|
klass.new.links.must_equal expected
|
213
198
|
end
|
214
|
-
|
199
|
+
|
215
200
|
end
|
216
201
|
|
217
|
-
|
218
|
-
describe '::
|
219
|
-
|
202
|
+
|
203
|
+
describe '::param' do
|
204
|
+
|
220
205
|
it 'is a private class method' do
|
221
|
-
private_method = lambda { Aviator::Request.
|
206
|
+
private_method = lambda { Aviator::Request.param }
|
222
207
|
private_method.must_raise NoMethodError
|
223
|
-
|
208
|
+
|
224
209
|
error = private_method.call rescue $!
|
225
|
-
|
210
|
+
|
226
211
|
error.message.wont_be_nil
|
227
212
|
error.message.must_include "private method"
|
228
213
|
end
|
229
|
-
|
214
|
+
|
230
215
|
end
|
231
216
|
|
232
|
-
|
217
|
+
|
233
218
|
describe '::optional_params' do
|
234
|
-
|
219
|
+
|
235
220
|
it 'returns an array' do
|
236
221
|
klass = Class.new(Aviator::Request) do
|
237
|
-
|
222
|
+
param :whatever, required: false
|
238
223
|
end
|
239
|
-
|
224
|
+
|
240
225
|
klass.optional_params.must_equal [:whatever]
|
241
226
|
end
|
242
|
-
|
227
|
+
|
243
228
|
end
|
244
|
-
|
245
|
-
|
229
|
+
|
230
|
+
|
246
231
|
describe '#optional_params' do
|
247
|
-
|
232
|
+
|
248
233
|
it 'returns an array' do
|
249
234
|
klass = Class.new(Aviator::Request) do
|
250
|
-
|
235
|
+
param :whatever, required: false
|
251
236
|
end
|
252
|
-
|
237
|
+
|
253
238
|
klass.new.optional_params.must_equal [:whatever]
|
254
239
|
end
|
255
|
-
|
256
|
-
end
|
257
|
-
|
258
|
-
|
259
|
-
describe '::required_param' do
|
260
|
-
|
261
|
-
it 'is a private class method' do
|
262
|
-
private_method = lambda { Aviator::Request.required_param }
|
263
|
-
private_method.must_raise NoMethodError
|
264
|
-
|
265
|
-
error = private_method.call rescue $!
|
266
|
-
|
267
|
-
error.message.wont_be_nil
|
268
|
-
error.message.must_include "private method"
|
269
|
-
end
|
270
|
-
|
240
|
+
|
271
241
|
end
|
272
|
-
|
273
|
-
|
242
|
+
|
243
|
+
|
274
244
|
describe '::required_params' do
|
275
|
-
|
245
|
+
|
276
246
|
it 'returns an array' do
|
277
247
|
klass = Class.new(Aviator::Request) do
|
278
|
-
|
248
|
+
param :whatever, required: true
|
279
249
|
end
|
280
|
-
|
250
|
+
|
281
251
|
klass.required_params.must_equal [:whatever]
|
282
252
|
end
|
283
|
-
|
253
|
+
|
284
254
|
end
|
285
|
-
|
286
|
-
|
255
|
+
|
256
|
+
|
287
257
|
describe '#required_params' do
|
288
|
-
|
258
|
+
|
289
259
|
it 'returns an array' do
|
290
260
|
klass = Class.new(Aviator::Request) do
|
291
|
-
|
261
|
+
param :whatever, required: true
|
292
262
|
end
|
293
|
-
|
294
|
-
klass.
|
263
|
+
|
264
|
+
request = klass.new do |params|
|
265
|
+
params[:whatever] = 'something'
|
266
|
+
end
|
267
|
+
|
268
|
+
|
269
|
+
request.required_params.must_equal [:whatever]
|
295
270
|
end
|
296
|
-
|
271
|
+
|
297
272
|
end
|
298
273
|
|
299
|
-
|
274
|
+
|
300
275
|
describe '::url?' do
|
301
|
-
|
302
|
-
it 'returns false if the
|
276
|
+
|
277
|
+
it 'returns false if the url method is not defined' do
|
303
278
|
klass = Class.new(Aviator::Request)
|
304
|
-
|
279
|
+
|
305
280
|
klass.url?.must_equal false
|
306
281
|
end
|
307
|
-
|
308
|
-
|
309
|
-
it 'returns true if the
|
282
|
+
|
283
|
+
|
284
|
+
it 'returns true if the url method is defined' do
|
310
285
|
klass = Class.new(Aviator::Request) do
|
311
286
|
def url; end
|
312
287
|
end
|
313
|
-
|
288
|
+
|
314
289
|
klass.url?.must_equal true
|
315
290
|
end
|
316
|
-
|
291
|
+
|
317
292
|
end
|
318
|
-
|
319
|
-
|
320
|
-
describe '#
|
321
|
-
|
322
|
-
it 'returns false if the
|
293
|
+
|
294
|
+
|
295
|
+
describe '#url?' do
|
296
|
+
|
297
|
+
it 'returns false if the url method is not defined' do
|
323
298
|
klass = Class.new(Aviator::Request)
|
324
|
-
|
299
|
+
|
325
300
|
klass.new.url?.must_equal false
|
326
301
|
end
|
327
|
-
|
328
|
-
|
329
|
-
it 'returns true if the
|
302
|
+
|
303
|
+
|
304
|
+
it 'returns true if the url method is defined' do
|
330
305
|
klass = Class.new(Aviator::Request) do
|
331
306
|
def url; end
|
332
307
|
end
|
333
|
-
|
308
|
+
|
334
309
|
klass.new.url?.must_equal true
|
335
310
|
end
|
336
|
-
|
311
|
+
|
337
312
|
end
|
338
313
|
|
339
314
|
|
@@ -22,21 +22,21 @@ class Aviator::Test
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
26
|
-
|
25
|
+
|
26
|
+
|
27
27
|
def klass
|
28
28
|
Aviator::Service
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
|
32
32
|
def service(default_session_data=nil)
|
33
33
|
options = {
|
34
34
|
provider: config[:provider],
|
35
35
|
service: config[:auth_service][:name]
|
36
36
|
}
|
37
|
-
|
37
|
+
|
38
38
|
options[:default_session_data] = default_session_data unless default_session_data.nil?
|
39
|
-
|
39
|
+
|
40
40
|
klass.new(options)
|
41
41
|
end
|
42
42
|
|
@@ -45,7 +45,7 @@ class Aviator::Test
|
|
45
45
|
|
46
46
|
it 'can find the correct request based on bootstrapped session data' do
|
47
47
|
response = do_auth_request
|
48
|
-
|
48
|
+
|
49
49
|
response.must_be_instance_of Aviator::Response
|
50
50
|
response.request.api_version.must_equal config[:auth_service][:api_version].to_sym
|
51
51
|
end
|
@@ -67,26 +67,26 @@ class Aviator::Test
|
|
67
67
|
params[k] = v
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
response.must_be_instance_of Aviator::Response
|
72
72
|
response.request.api_version.must_equal :v2
|
73
73
|
response.status.must_equal 200
|
74
74
|
end
|
75
|
-
|
76
|
-
|
75
|
+
|
76
|
+
|
77
77
|
it 'can find the correct request based on non-bootstrapped session data' do
|
78
78
|
session_data = do_auth_request.body
|
79
|
-
|
79
|
+
|
80
80
|
response = service.request :create_tenant, session_data: session_data do |params|
|
81
81
|
params.name = 'Test Project'
|
82
82
|
params.description = 'This is a test'
|
83
83
|
params.enabled = true
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
response.status.must_equal 200
|
87
87
|
end
|
88
|
-
|
89
|
-
|
88
|
+
|
89
|
+
|
90
90
|
it 'uses the default session data if session data is not provided' do
|
91
91
|
default_session_data = do_auth_request.body
|
92
92
|
s = service(default_session_data)
|
@@ -96,11 +96,11 @@ class Aviator::Test
|
|
96
96
|
params.description = 'This is a test'
|
97
97
|
params.enabled = true
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
response.status.must_equal 200
|
101
101
|
end
|
102
|
-
|
103
|
-
|
102
|
+
|
103
|
+
|
104
104
|
it 'raises a SessionDataNotProvidedError if there is no session data' do
|
105
105
|
the_method = lambda do
|
106
106
|
service.request :create_tenant do |params|
|
@@ -109,28 +109,51 @@ class Aviator::Test
|
|
109
109
|
params.enabled = true
|
110
110
|
end
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
the_method.must_raise Aviator::Service::SessionDataNotProvidedError
|
114
114
|
error = the_method.call rescue $!
|
115
115
|
error.message.wont_be_nil
|
116
116
|
end
|
117
|
-
|
118
|
-
|
117
|
+
|
118
|
+
|
119
119
|
it 'accepts an endpoint type option for selecting a specific request' do
|
120
120
|
default_session_data = do_auth_request.body
|
121
121
|
s = service(default_session_data)
|
122
|
-
|
122
|
+
|
123
123
|
response1 = s.request :list_tenants, endpoint_type: 'admin'
|
124
124
|
response2 = s.request :list_tenants, endpoint_type: 'public'
|
125
|
-
|
125
|
+
|
126
126
|
response1.request.url.wont_equal response2.request.url
|
127
127
|
end
|
128
128
|
|
129
129
|
end
|
130
130
|
|
131
131
|
|
132
|
-
describe '#
|
132
|
+
describe '#request_classes' do
|
133
|
+
|
134
|
+
it 'returns an array of the request classes' do
|
135
|
+
provider_name = config[:provider]
|
136
|
+
service_name = config[:auth_service][:name]
|
137
|
+
service_path = Pathname.new(__FILE__).join(
|
138
|
+
'..', '..', '..', '..', 'lib', 'aviator', provider_name, service_name
|
139
|
+
).expand_path
|
140
|
+
|
141
|
+
request_files = Pathname.glob(service_path.join('**', '*.rb'))
|
142
|
+
.map{|rf| rf.to_s.match(/#{provider_name}\/#{service_name}\/([\w\/]+)\.rb$/) }
|
143
|
+
.map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
|
144
|
+
|
145
|
+
classes = request_files.map do |rf|
|
146
|
+
"Aviator::#{provider_name.camelize}::#{service_name.camelize}::#{rf}".constantize
|
147
|
+
end
|
148
|
+
|
149
|
+
service.request_classes.must_equal classes
|
150
|
+
end
|
133
151
|
|
152
|
+
end
|
153
|
+
|
154
|
+
|
155
|
+
describe '#default_session_data=' do
|
156
|
+
|
134
157
|
it 'sets the service\'s default session data' do
|
135
158
|
bootstrap = {
|
136
159
|
auth_service: {
|
@@ -139,18 +162,18 @@ class Aviator::Test
|
|
139
162
|
request: 'create_token'
|
140
163
|
}
|
141
164
|
}
|
142
|
-
|
165
|
+
|
143
166
|
svc = service(bootstrap)
|
144
167
|
|
145
168
|
session_data_1 = svc.default_session_data
|
146
169
|
session_data_2 = do_auth_request.body
|
147
|
-
|
170
|
+
|
148
171
|
svc.default_session_data = session_data_2
|
149
|
-
|
172
|
+
|
150
173
|
svc.default_session_data.wont_equal session_data_1
|
151
174
|
svc.default_session_data.must_equal session_data_2
|
152
175
|
end
|
153
|
-
|
176
|
+
|
154
177
|
end
|
155
178
|
|
156
179
|
end
|
@@ -99,6 +99,35 @@ class Aviator::Test
|
|
99
99
|
end
|
100
100
|
|
101
101
|
end
|
102
|
+
|
103
|
+
|
104
|
+
describe '#load' do
|
105
|
+
|
106
|
+
it 'returns itself' do
|
107
|
+
session = new_session
|
108
|
+
session.authenticate
|
109
|
+
|
110
|
+
str = session.dump
|
111
|
+
session.load(str).must_equal session
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
it 'updates the session data of its service objects' do
|
116
|
+
session1 = new_session
|
117
|
+
session1.authenticate
|
118
|
+
keystone1 = session1.identity_service
|
119
|
+
|
120
|
+
session2 = new_session
|
121
|
+
session2.authenticate
|
122
|
+
keystone2 = session2.identity_service
|
123
|
+
|
124
|
+
session1.load(session2.dump)
|
125
|
+
|
126
|
+
keystone1.wont_equal keystone2
|
127
|
+
keystone1.default_session_data.must_equal keystone2.default_session_data
|
128
|
+
end
|
129
|
+
|
130
|
+
end # describe '#load'
|
102
131
|
|
103
132
|
|
104
133
|
describe '::load' do
|