stacker_bee 2.1.1.pre305 → 2.1.1.pre324
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +43 -8
- data/config.default.yml +1 -1
- data/lib/stacker_bee/client.rb +5 -2
- data/lib/stacker_bee/configuration.rb +22 -2
- data/lib/stacker_bee/middleware/adapter.rb +5 -1
- data/lib/stacker_bee/middleware/cloud_stack_api.rb +1 -2
- data/lib/stacker_bee/middleware/console_access.rb +1 -2
- data/lib/stacker_bee/request_error.rb +1 -1
- data/spec/cassettes/A_request_sent_to_CloudStack_for_console_access/returns_html_for_console_access.yml +1 -1
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_nil_request_parameter/properly_executes_the_request.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_a_map/can_create_an_object.yml +18 -198
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_an_Array/.yml +6 -37
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_and_empty_string/properly_executes_the_request.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_that_triggers_an_error/properly_signs_the_request.yml +2 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_account_type_/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_accounttype_/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_doesn_t_match_the_content_type/uses_the_middleware.yml +3 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_matches_the_content_type/uses_the_middleware.yml +3 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/space_character_in_a_request_parameter/properly_signs_the_request.yml +2 -31
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/with_a_nonexistant_path/raises_a_client_error.yml +47 -0
- data/spec/integration/console_spec.rb +4 -3
- data/spec/integration/request_spec.rb +26 -9
- data/spec/units/stacker_bee/configuration_spec.rb +30 -0
- data/spec/units/stacker_bee/middleware/adapter_spec.rb +9 -1
- data/spec/units/stacker_bee/middleware/cloud_stack_api_spec.rb +6 -13
- data/spec/units/stacker_bee/middleware/console_access_spec.rb +6 -3
- metadata +4 -12
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/.yml +0 -37
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/should_log_response_as_error.yml +0 -37
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first/.yml +0 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_log_request.yml +0 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_not_log_response_as_error.yml +0 -33
@@ -2,37 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
User-Agent:
|
11
|
-
- Faraday v0.8.8
|
12
|
-
Accept-Encoding:
|
13
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
-
Accept:
|
15
|
-
- '*/*'
|
16
|
-
response:
|
17
|
-
status:
|
18
|
-
code: 200
|
19
|
-
message: OK
|
20
|
-
headers:
|
21
|
-
Content-Type:
|
22
|
-
- text/javascript; charset=UTF-8
|
23
|
-
Content-Length:
|
24
|
-
- '1778'
|
25
|
-
Server:
|
26
|
-
- Jetty(6.1.26)
|
27
|
-
body:
|
28
|
-
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","name":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","receivedbytes":100,"sentbytes":100,"vmlimit":"Unlimited","vmtotal":1,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":1,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":1,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","vmrunning":1,"projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":1,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":1,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":32,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":2,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"fdc03456-2034-11e3-a44b-d6558ad1fb9f","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2013-09-17T23:36:11-0400","state":"enabled","account":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
30
|
-
] } }'
|
31
|
-
http_version:
|
32
|
-
recorded_at: Tue, 29 Oct 2013 20:20:11 GMT
|
33
|
-
- request:
|
34
|
-
method: get
|
35
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
36
6
|
body:
|
37
7
|
encoding: US-ASCII
|
38
8
|
string: ''
|
@@ -51,13 +21,13 @@ http_interactions:
|
|
51
21
|
Content-Type:
|
52
22
|
- text/javascript; charset=UTF-8
|
53
23
|
Content-Length:
|
54
|
-
- '
|
24
|
+
- '1727'
|
55
25
|
Server:
|
56
26
|
- Jetty(6.1.26)
|
57
27
|
body:
|
58
28
|
encoding: UTF-8
|
59
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":
|
29
|
+
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":2,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
60
30
|
] } }'
|
61
31
|
http_version:
|
62
|
-
recorded_at:
|
32
|
+
recorded_at: Mon, 24 Nov 2014 18:07:25 GMT
|
63
33
|
recorded_with: VCR 2.9.3
|
data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_accounttype_/.yml
CHANGED
@@ -2,37 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
User-Agent:
|
11
|
-
- Faraday v0.8.8
|
12
|
-
Accept-Encoding:
|
13
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
-
Accept:
|
15
|
-
- '*/*'
|
16
|
-
response:
|
17
|
-
status:
|
18
|
-
code: 200
|
19
|
-
message: OK
|
20
|
-
headers:
|
21
|
-
Content-Type:
|
22
|
-
- text/javascript; charset=UTF-8
|
23
|
-
Content-Length:
|
24
|
-
- '1778'
|
25
|
-
Server:
|
26
|
-
- Jetty(6.1.26)
|
27
|
-
body:
|
28
|
-
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","name":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","receivedbytes":100,"sentbytes":100,"vmlimit":"Unlimited","vmtotal":1,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":1,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":1,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","vmrunning":1,"projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":1,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":1,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":32,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":2,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"fdc03456-2034-11e3-a44b-d6558ad1fb9f","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2013-09-17T23:36:11-0400","state":"enabled","account":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
30
|
-
] } }'
|
31
|
-
http_version:
|
32
|
-
recorded_at: Tue, 29 Oct 2013 20:20:11 GMT
|
33
|
-
- request:
|
34
|
-
method: get
|
35
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
36
6
|
body:
|
37
7
|
encoding: US-ASCII
|
38
8
|
string: ''
|
@@ -51,13 +21,13 @@ http_interactions:
|
|
51
21
|
Content-Type:
|
52
22
|
- text/javascript; charset=UTF-8
|
53
23
|
Content-Length:
|
54
|
-
- '
|
24
|
+
- '1727'
|
55
25
|
Server:
|
56
26
|
- Jetty(6.1.26)
|
57
27
|
body:
|
58
28
|
encoding: UTF-8
|
59
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":
|
29
|
+
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":2,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
60
30
|
] } }'
|
61
31
|
http_version:
|
62
|
-
recorded_at:
|
32
|
+
recorded_at: Mon, 24 Nov 2014 18:07:25 GMT
|
63
33
|
recorded_with: VCR 2.9.3
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -26,38 +26,8 @@ http_interactions:
|
|
26
26
|
- Jetty(6.1.26)
|
27
27
|
body:
|
28
28
|
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"
|
29
|
+
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":2,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
30
30
|
] } }'
|
31
31
|
http_version:
|
32
|
-
recorded_at:
|
33
|
-
- request:
|
34
|
-
method: get
|
35
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
36
|
-
body:
|
37
|
-
encoding: US-ASCII
|
38
|
-
string: ''
|
39
|
-
headers:
|
40
|
-
User-Agent:
|
41
|
-
- Faraday v0.8.9
|
42
|
-
Accept-Encoding:
|
43
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
44
|
-
Accept:
|
45
|
-
- '*/*'
|
46
|
-
response:
|
47
|
-
status:
|
48
|
-
code: 200
|
49
|
-
message: OK
|
50
|
-
headers:
|
51
|
-
Content-Type:
|
52
|
-
- text/javascript; charset=UTF-8
|
53
|
-
Content-Length:
|
54
|
-
- '1728'
|
55
|
-
Server:
|
56
|
-
- Jetty(6.1.26)
|
57
|
-
body:
|
58
|
-
encoding: UTF-8
|
59
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":12,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
60
|
-
] } }'
|
61
|
-
http_version:
|
62
|
-
recorded_at: Thu, 09 Oct 2014 18:16:04 GMT
|
32
|
+
recorded_at: Mon, 24 Nov 2014 18:07:25 GMT
|
63
33
|
recorded_with: VCR 2.9.3
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -26,38 +26,8 @@ http_interactions:
|
|
26
26
|
- Jetty(6.1.26)
|
27
27
|
body:
|
28
28
|
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"
|
29
|
+
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":2,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
30
30
|
] } }'
|
31
31
|
http_version:
|
32
|
-
recorded_at:
|
33
|
-
- request:
|
34
|
-
method: get
|
35
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
36
|
-
body:
|
37
|
-
encoding: US-ASCII
|
38
|
-
string: ''
|
39
|
-
headers:
|
40
|
-
User-Agent:
|
41
|
-
- Faraday v0.8.9
|
42
|
-
Accept-Encoding:
|
43
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
44
|
-
Accept:
|
45
|
-
- '*/*'
|
46
|
-
response:
|
47
|
-
status:
|
48
|
-
code: 200
|
49
|
-
message: OK
|
50
|
-
headers:
|
51
|
-
Content-Type:
|
52
|
-
- text/javascript; charset=UTF-8
|
53
|
-
Content-Length:
|
54
|
-
- '1728'
|
55
|
-
Server:
|
56
|
-
- Jetty(6.1.26)
|
57
|
-
body:
|
58
|
-
encoding: UTF-8
|
59
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":12,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
60
|
-
] } }'
|
61
|
-
http_version:
|
62
|
-
recorded_at: Thu, 09 Oct 2014 18:16:04 GMT
|
32
|
+
recorded_at: Mon, 24 Nov 2014 18:07:25 GMT
|
63
33
|
recorded_with: VCR 2.9.3
|
@@ -2,36 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
User-Agent:
|
11
|
-
- Faraday v0.8.8
|
12
|
-
Accept-Encoding:
|
13
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
-
Accept:
|
15
|
-
- '*/*'
|
16
|
-
response:
|
17
|
-
status:
|
18
|
-
code: 200
|
19
|
-
message: OK
|
20
|
-
headers:
|
21
|
-
Content-Type:
|
22
|
-
- text/javascript; charset=UTF-8
|
23
|
-
Content-Length:
|
24
|
-
- '32'
|
25
|
-
Server:
|
26
|
-
- Jetty(6.1.26)
|
27
|
-
body:
|
28
|
-
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { } }'
|
30
|
-
http_version:
|
31
|
-
recorded_at: Mon, 28 Oct 2013 15:24:49 GMT
|
32
|
-
- request:
|
33
|
-
method: get
|
34
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&name=stacker%20bee&response=json&signature=uAHazDwdFrvlPK9JgZjNZvsojfI=
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&name=stacker%20bee&response=json&signature=uAHazDwdFrvlPK9JgZjNZvsojfI=
|
35
6
|
body:
|
36
7
|
encoding: US-ASCII
|
37
8
|
string: ''
|
@@ -57,5 +28,5 @@ http_interactions:
|
|
57
28
|
encoding: UTF-8
|
58
29
|
string: '{ "listaccountsresponse" : { } }'
|
59
30
|
http_version:
|
60
|
-
recorded_at:
|
31
|
+
recorded_at: Mon, 24 Nov 2014 18:07:26 GMT
|
61
32
|
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,47 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: <CLOUD_STACK_HOST>/not/a/real/endpoint?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.8.9
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 404
|
19
|
+
message: Not Found
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- must-revalidate,no-cache,no-store
|
23
|
+
Content-Type:
|
24
|
+
- text/html; charset=iso-8859-1
|
25
|
+
Content-Length:
|
26
|
+
- '1287'
|
27
|
+
Server:
|
28
|
+
- Jetty(6.1.26)
|
29
|
+
body:
|
30
|
+
encoding: UTF-8
|
31
|
+
string: "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;
|
32
|
+
charset=ISO-8859-1\"/>\n<title>Error 404 NOT_FOUND</title>\n</head>\n<body>\n<h2>HTTP
|
33
|
+
ERROR: 404</h2>\n<p>Problem accessing /not/a/real/endpoint. Reason:\n<pre>
|
34
|
+
\ NOT_FOUND</pre></p>\n<hr /><i><small>Powered by Jetty://</small></i>\n
|
35
|
+
\ \n \n
|
36
|
+
\ \n \n
|
37
|
+
\ \n \n
|
38
|
+
\ \n \n
|
39
|
+
\ \n \n
|
40
|
+
\ \n \n
|
41
|
+
\ \n \n
|
42
|
+
\ \n \n
|
43
|
+
\ \n \n
|
44
|
+
\ \n \n</body>\n</html>\n"
|
45
|
+
http_version:
|
46
|
+
recorded_at: Mon, 24 Nov 2014 18:07:25 GMT
|
47
|
+
recorded_with: VCR 2.9.3
|
@@ -5,9 +5,10 @@ describe 'A request sent to CloudStack for console access', :vcr do
|
|
5
5
|
let(:client) { StackerBee::Client.new(config_hash) }
|
6
6
|
let(:config_hash) do
|
7
7
|
{
|
8
|
-
url:
|
9
|
-
|
10
|
-
|
8
|
+
url: CONFIG['url'],
|
9
|
+
console_path: CONFIG['console_path'],
|
10
|
+
api_key: CONFIG['api_key'],
|
11
|
+
secret_key: CONFIG['secret_key']
|
11
12
|
}
|
12
13
|
end
|
13
14
|
|
@@ -3,13 +3,18 @@ require 'logger'
|
|
3
3
|
describe 'A response to a request sent to the CloudStack API', :vcr do
|
4
4
|
subject { client.list_accounts }
|
5
5
|
|
6
|
-
let(:
|
6
|
+
let(:config_url) { CONFIG['url'] }
|
7
|
+
let(:uri) { URI.parse(config_url) }
|
8
|
+
let(:url) { uri.to_s }
|
9
|
+
let(:api_path) { CONFIG['api_path'] }
|
7
10
|
let(:config_hash) do
|
8
11
|
{
|
9
|
-
url:
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
url: url,
|
13
|
+
api_path: api_path,
|
14
|
+
console_path: CONFIG['console_path'],
|
15
|
+
api_key: CONFIG['api_key'],
|
16
|
+
secret_key: CONFIG['secret_key'],
|
17
|
+
middlewares: middlewares
|
13
18
|
}
|
14
19
|
end
|
15
20
|
let(:middlewares) { proc {} }
|
@@ -28,18 +33,30 @@ describe 'A response to a request sent to the CloudStack API', :vcr do
|
|
28
33
|
end
|
29
34
|
|
30
35
|
context 'failing to connect' do
|
31
|
-
let(:url) { 'http://127.0.0.1:666
|
36
|
+
let(:url) { 'http://127.0.0.1:666' }
|
32
37
|
it 'raises a helpful exception' do
|
33
38
|
klass = StackerBee::ConnectionError
|
34
39
|
expect { subject }.to raise_error klass, /#{url}/
|
35
40
|
end
|
36
41
|
end
|
37
42
|
|
38
|
-
context '
|
39
|
-
let(:
|
43
|
+
context 'with a nonexistant path', :regression do
|
44
|
+
let(:api_path) { '/not/a/real/endpoint' }
|
45
|
+
it 'raises a client error' do
|
46
|
+
expect { subject }.to raise_error(StackerBee::RequestError)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'trailing slash in API path', :regression do
|
51
|
+
let(:api_path) { api_path_without_slash + '/' }
|
52
|
+
let(:api_path_without_slash) { api_path_from_config.sub(/\/$/, '') }
|
53
|
+
let(:api_path_from_config) { CONFIG.fetch('api_path', '/client/api') }
|
40
54
|
it 'makes request with trailing slash' do
|
41
|
-
stub = stub_request(:get, /#{
|
55
|
+
stub = stub_request(:get, /#{api_path_without_slash}\?apiKey/)
|
56
|
+
.to_return(body: '{"foo": {}}')
|
57
|
+
|
42
58
|
subject
|
59
|
+
|
43
60
|
expect(stub).to have_been_requested
|
44
61
|
end
|
45
62
|
end
|
@@ -42,6 +42,36 @@ describe StackerBee::Configuration do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
describe '#api_path' do
|
46
|
+
subject { configuration.api_path }
|
47
|
+
|
48
|
+
context 'when not set' do
|
49
|
+
let(:configuration) { described_class.new }
|
50
|
+
it { is_expected.to eq '/client/api' }
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when set' do
|
54
|
+
let(:configuration) { described_class.new(api_path: setting) }
|
55
|
+
let(:setting) { '/new-path/cloudstack' }
|
56
|
+
it { is_expected.to eq setting }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#console_path' do
|
61
|
+
subject { configuration.console_path }
|
62
|
+
|
63
|
+
context 'when not set' do
|
64
|
+
let(:configuration) { described_class.new }
|
65
|
+
it { is_expected.to eq '/client/console' }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when set' do
|
69
|
+
let(:configuration) { described_class.new(console_path: setting) }
|
70
|
+
let(:setting) { '/new-path/cloudstack' }
|
71
|
+
it { is_expected.to eq setting }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
45
75
|
describe '#secret_key' do
|
46
76
|
subject { configuration.secret_key }
|
47
77
|
|
@@ -8,7 +8,7 @@ describe StackerBee::Middleware::Adapter do
|
|
8
8
|
end
|
9
9
|
let(:app) { double(:app, call: response) }
|
10
10
|
let(:response) { double(:response) }
|
11
|
-
let(:path) {
|
11
|
+
let(:path) { '/the/path' }
|
12
12
|
|
13
13
|
let(:params) { { 'z' => 'z', 'a' => 'a' } }
|
14
14
|
let(:connection) { double(:connection, get: raw_response) }
|
@@ -43,6 +43,14 @@ describe StackerBee::Middleware::Adapter do
|
|
43
43
|
it 'sorts the paramers' do
|
44
44
|
expect(connection).to have_received(:get).with(path, [%w(a a), %w(z z)])
|
45
45
|
end
|
46
|
+
|
47
|
+
context 'when the path ends in a slash' do
|
48
|
+
let(:path) { '/my/path/' }
|
49
|
+
it 'discards the trailing slash' do
|
50
|
+
expect(connection).to \
|
51
|
+
have_received(:get).with('/my/path', [%w(a a), %w(z z)])
|
52
|
+
end
|
53
|
+
end
|
46
54
|
end
|
47
55
|
|
48
56
|
describe '#endpoint_name_for' do
|
@@ -1,12 +1,13 @@
|
|
1
1
|
describe StackerBee::Middleware::CloudStackAPI do
|
2
2
|
let(:env) do
|
3
3
|
StackerBee::Middleware::Environment.new(
|
4
|
-
endpoint_name: 'endpoint-name'
|
5
|
-
path: path
|
4
|
+
endpoint_name: 'endpoint-name'
|
6
5
|
)
|
7
6
|
end
|
8
|
-
let(:middleware)
|
9
|
-
|
7
|
+
let(:middleware) do
|
8
|
+
described_class.new(api_key: 'API-KEY', api_path: api_path)
|
9
|
+
end
|
10
|
+
let(:api_path) { '/my/path' }
|
10
11
|
|
11
12
|
before do
|
12
13
|
middleware.before(env)
|
@@ -15,15 +16,7 @@ describe StackerBee::Middleware::CloudStackAPI do
|
|
15
16
|
describe 'request' do
|
16
17
|
subject { env.request }
|
17
18
|
|
18
|
-
|
19
|
-
let(:path) { nil }
|
20
|
-
its(:path) { should == described_class::DEFAULT_PATH }
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'when the path is already set' do
|
24
|
-
let(:path) { 'already set' }
|
25
|
-
its(:path) { should == path }
|
26
|
-
end
|
19
|
+
its(:path) { should == '/my/path' }
|
27
20
|
end
|
28
21
|
|
29
22
|
describe 'params' do
|
@@ -3,15 +3,18 @@ describe StackerBee::Middleware::ConsoleAccess do
|
|
3
3
|
StackerBee::Middleware::Environment.new(endpoint_name: endpoint_name)
|
4
4
|
end
|
5
5
|
|
6
|
-
let(:middleware)
|
6
|
+
let(:middleware) do
|
7
|
+
described_class.new(app: app, console_path: console_path)
|
8
|
+
end
|
7
9
|
let(:app) { double(:app) }
|
10
|
+
let(:console_path) { '/path/to/console' }
|
8
11
|
|
9
12
|
context 'when it matches the endpoint' do
|
10
13
|
let(:endpoint_name) { described_class::ENDPOINT }
|
11
14
|
|
12
15
|
it 'adds its path to the env' do
|
13
16
|
middleware.before(env)
|
14
|
-
expect(env.request.path).to eq
|
17
|
+
expect(env.request.path).to eq console_path
|
15
18
|
end
|
16
19
|
|
17
20
|
it 'adds cmd to the parameters' do
|
@@ -25,7 +28,7 @@ describe StackerBee::Middleware::ConsoleAccess do
|
|
25
28
|
before { middleware.before(env) }
|
26
29
|
|
27
30
|
it "doesn't add it's path" do
|
28
|
-
expect(env.request.path).
|
31
|
+
expect(env.request.path).to be_nil
|
29
32
|
end
|
30
33
|
|
31
34
|
it "doesn't add cmd to the parameters" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stacker_bee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.1.
|
4
|
+
version: 2.1.1.pre324
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Sterndale
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -245,17 +245,13 @@ files:
|
|
245
245
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_an_Array/.yml
|
246
246
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_and_empty_string/properly_executes_the_request.yml
|
247
247
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_that_triggers_an_error/properly_signs_the_request.yml
|
248
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/.yml
|
249
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/should_log_response_as_error.yml
|
250
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first/.yml
|
251
248
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/.yml
|
252
249
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_account_type_/.yml
|
253
250
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_accounttype_/.yml
|
254
251
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_doesn_t_match_the_content_type/uses_the_middleware.yml
|
255
252
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_matches_the_content_type/uses_the_middleware.yml
|
256
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_log_request.yml
|
257
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_not_log_response_as_error.yml
|
258
253
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/space_character_in_a_request_parameter/properly_signs_the_request.yml
|
254
|
+
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/with_a_nonexistant_path/raises_a_client_error.yml
|
259
255
|
- spec/fixtures/4.2.json
|
260
256
|
- spec/fixtures/simple.json
|
261
257
|
- spec/integration/configure_middleware_spec.rb
|
@@ -319,17 +315,13 @@ test_files:
|
|
319
315
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_an_Array/.yml
|
320
316
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_and_empty_string/properly_executes_the_request.yml
|
321
317
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_that_triggers_an_error/properly_signs_the_request.yml
|
322
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/.yml
|
323
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/should_log_response_as_error.yml
|
324
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first/.yml
|
325
318
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/.yml
|
326
319
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_account_type_/.yml
|
327
320
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_accounttype_/.yml
|
328
321
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_doesn_t_match_the_content_type/uses_the_middleware.yml
|
329
322
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_matches_the_content_type/uses_the_middleware.yml
|
330
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_log_request.yml
|
331
|
-
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_not_log_response_as_error.yml
|
332
323
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/space_character_in_a_request_parameter/properly_signs_the_request.yml
|
324
|
+
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/with_a_nonexistant_path/raises_a_client_error.yml
|
333
325
|
- spec/fixtures/4.2.json
|
334
326
|
- spec/fixtures/simple.json
|
335
327
|
- spec/integration/configure_middleware_spec.rb
|