misty 0.7.2 → 0.8.0

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -23
  3. data/lib/misty/auth.rb +24 -19
  4. data/lib/misty/auth/auth_v2.rb +12 -12
  5. data/lib/misty/auth/auth_v3.rb +15 -15
  6. data/lib/misty/autoload.rb +27 -27
  7. data/lib/misty/cloud.rb +2 -1
  8. data/lib/misty/http/client.rb +17 -15
  9. data/lib/misty/http/method_builder.rb +1 -1
  10. data/lib/misty/http/net_http.rb +12 -7
  11. data/lib/misty/http/request.rb +13 -7
  12. data/lib/misty/misty.rb +30 -30
  13. data/lib/misty/openstack/aodh/v2.rb +1 -1
  14. data/lib/misty/openstack/ceilometer/v2.rb +1 -1
  15. data/lib/misty/openstack/cinder/v1.rb +2 -2
  16. data/lib/misty/openstack/cinder/v2.rb +2 -2
  17. data/lib/misty/openstack/cinder/v3.rb +2 -2
  18. data/lib/misty/openstack/designate/v2.rb +1 -1
  19. data/lib/misty/openstack/freezer/v1.rb +1 -1
  20. data/lib/misty/openstack/glance/v1.rb +1 -1
  21. data/lib/misty/openstack/glance/v2.rb +1 -1
  22. data/lib/misty/openstack/heat/v1.rb +2 -2
  23. data/lib/misty/openstack/ironic/v1.rb +2 -2
  24. data/lib/misty/openstack/karbor/v1.rb +1 -1
  25. data/lib/misty/openstack/keystone/v2_0.rb +2 -2
  26. data/lib/misty/openstack/keystone/v3.rb +2 -2
  27. data/lib/misty/openstack/magnum/v1.rb +2 -2
  28. data/lib/misty/openstack/manila/v2.rb +2 -2
  29. data/lib/misty/openstack/microversion.rb +9 -9
  30. data/lib/misty/openstack/murano/v1.rb +1 -1
  31. data/lib/misty/openstack/neutron/v2_0.rb +1 -1
  32. data/lib/misty/openstack/nova/v2_1.rb +4 -4
  33. data/lib/misty/openstack/octavia/v2_0.rb +1 -1
  34. data/lib/misty/openstack/sahara/v1_1.rb +1 -1
  35. data/lib/misty/openstack/searchlight/v1.rb +1 -1
  36. data/lib/misty/openstack/senlin/v1.rb +1 -1
  37. data/lib/misty/openstack/swift/v1.rb +1 -1
  38. data/lib/misty/openstack/tacker/v1_0.rb +1 -1
  39. data/lib/misty/openstack/trove/v1_0.rb +1 -1
  40. data/lib/misty/openstack/zaqar/v2.rb +1 -1
  41. data/lib/misty/services.rb +1 -1
  42. data/lib/misty/version.rb +1 -1
  43. data/test/integration/compute_test.rb +17 -17
  44. data/test/integration/network_test.rb +16 -16
  45. data/test/integration/orchestration_test.rb +51 -51
  46. data/test/integration/test_helper.rb +7 -7
  47. data/test/unit/auth/name_test.rb +53 -53
  48. data/test/unit/auth_test.rb +151 -152
  49. data/test/unit/cloud/requests_test.rb +58 -58
  50. data/test/unit/cloud/services_test.rb +62 -62
  51. data/test/unit/cloud_test.rb +48 -48
  52. data/test/unit/http/client_test.rb +21 -28
  53. data/test/unit/http/direct_test.rb +31 -31
  54. data/test/unit/http/method_builder_test.rb +42 -42
  55. data/test/unit/http/request_test.rb +33 -33
  56. data/test/unit/misty_test.rb +28 -28
  57. data/test/unit/openstack/APIs_test.rb +3 -3
  58. data/test/unit/openstack/microversion_test.rb +14 -14
  59. data/test/unit/service_helper.rb +4 -4
  60. data/test/unit/services_test.rb +5 -5
  61. data/test/unit/test_helper.rb +1 -1
  62. metadata +4 -4
@@ -4,19 +4,19 @@ require 'misty/http/request'
4
4
  require 'misty/http/direct'
5
5
 
6
6
  describe Misty::HTTP::Direct do
7
- describe "#base_set" do
8
- it "returns @base_set" do
9
- service.base_set(nil).must_equal ""
7
+ describe '#base_set' do
8
+ it 'returns @base_set' do
9
+ service.base_set(nil).must_equal ''
10
10
  end
11
11
 
12
- it "returns parameter" do
13
- service.base_set("/another-base").must_equal "/another-base"
12
+ it 'returns parameter' do
13
+ service.base_set('/another-base').must_equal '/another-base'
14
14
  end
15
15
  end
16
16
 
17
- describe "#delete" do
18
- it "successful without providing a base url" do
19
- stub_request(:delete, "http://localhost/resource/test").
17
+ describe '#delete' do
18
+ it 'successful without providing a base url' do
19
+ stub_request(:delete, 'http://localhost/resource/test').
20
20
  with(:headers => request_header).
21
21
  to_return(:status => 204, :body => '', :headers => {})
22
22
 
@@ -25,20 +25,20 @@ describe Misty::HTTP::Direct do
25
25
  response.body.must_be_nil
26
26
  end
27
27
 
28
- it "successful with a base url" do
29
- stub_request(:delete, "http://localhost/another-base/resource/test").
28
+ it 'successful with a base url' do
29
+ stub_request(:delete, 'http://localhost/another-base/resource/test').
30
30
  with(:headers => request_header).
31
31
  to_return(:status => 204, :body => '', :headers => {})
32
32
 
33
- response = service.delete('/resource/test', "/another-base")
33
+ response = service.delete('/resource/test', '/another-base')
34
34
  response.must_be_kind_of Net::HTTPNoContent
35
35
  response.body.must_be_nil
36
36
  end
37
37
  end
38
38
 
39
- describe "#get" do
40
- it "successful without providing a base url" do
41
- stub_request(:get, "http://localhost/resource/test").
39
+ describe '#get' do
40
+ it 'successful without providing a base url' do
41
+ stub_request(:get, 'http://localhost/resource/test').
42
42
  with(:headers => request_header).
43
43
  to_return(:status => 200, :body => '', :headers => {})
44
44
 
@@ -47,55 +47,55 @@ describe Misty::HTTP::Direct do
47
47
  response.body.must_be_nil
48
48
  end
49
49
 
50
- it "successful with a base url" do
51
- stub_request(:get, "http://localhost/another-base/resource/test").
50
+ it 'successful with a base url' do
51
+ stub_request(:get, 'http://localhost/another-base/resource/test').
52
52
  with(:headers => request_header).
53
53
  to_return(:status => 200, :body => '', :headers => {})
54
54
 
55
- response = service.get('/resource/test', "/another-base")
55
+ response = service.get('/resource/test', '/another-base')
56
56
  response.must_be_kind_of Net::HTTPOK
57
57
  response.body.must_be_nil
58
58
  end
59
59
  end
60
60
 
61
- describe "#post" do
62
- it "successful without providing a base url" do
63
- stub_request(:post, "http://localhost/resource/test").
61
+ describe '#post' do
62
+ it 'successful without providing a base url' do
63
+ stub_request(:post, 'http://localhost/resource/test').
64
64
  with(:body => "{\"data\":\"value\"}", :headers => request_header).
65
65
  to_return(:status => 201, :body => '', :headers => {})
66
66
 
67
- response = service.post('/resource/test', "data" => "value")
67
+ response = service.post('/resource/test', 'data' => 'value')
68
68
  response.must_be_kind_of Net::HTTPCreated
69
69
  response.body.must_be_nil
70
70
  end
71
71
 
72
- it "successful with a base url" do
73
- stub_request(:post, "http://localhost/another-base/resource/test").
72
+ it 'successful with a base url' do
73
+ stub_request(:post, 'http://localhost/another-base/resource/test').
74
74
  with(:body => "{\"data\":\"value\"}", :headers => request_header).
75
75
  to_return(:status => 201, :body => '', :headers => {})
76
- response = service.post('/resource/test', {"data" => "value"}, "/another-base")
76
+ response = service.post('/resource/test', {'data' => 'value'}, '/another-base')
77
77
  response.must_be_kind_of Net::HTTPCreated
78
78
  response.body.must_be_nil
79
79
  end
80
80
  end
81
81
 
82
- describe "#put" do
83
- it "successful without providing a base url" do
84
- stub_request(:put, "http://localhost/resource/test").
82
+ describe '#put' do
83
+ it 'successful without providing a base url' do
84
+ stub_request(:put, 'http://localhost/resource/test').
85
85
  with(:body => "{\"data\":\"value\"}", :headers => request_header).
86
86
  to_return(:status => 200, :body => '', :headers => {})
87
87
 
88
- response = service.put('/resource/test', "data" => "value")
88
+ response = service.put('/resource/test', 'data' => 'value')
89
89
  response.must_be_kind_of Net::HTTPOK
90
90
  response.body.must_be_nil
91
91
  end
92
92
 
93
- it "successful with a base url" do
94
- stub_request(:put, "http://localhost/another-base/resource/test").
93
+ it 'successful with a base url' do
94
+ stub_request(:put, 'http://localhost/another-base/resource/test').
95
95
  with(:body => "{\"data\":\"value\"}", :headers => request_header).
96
96
  to_return(:status => 200, :body => '', :headers => {})
97
97
 
98
- response = service.put('/resource/test', {"data" => "value"}, "/another-base")
98
+ response = service.put('/resource/test', {'data' => 'value'}, '/another-base')
99
99
  response.must_be_kind_of Net::HTTPOK
100
100
  response.body.must_be_nil
101
101
  end
@@ -14,29 +14,29 @@ describe Misty::HTTP::MethodBuilder do
14
14
  Service.new
15
15
  end
16
16
 
17
- describe "#base_filter" do
18
- it "return path with base_path" do
19
- service.base_path = "/base_path"
20
- service.send(:base_filter, true, "/abc/def/").must_equal "/base_path/abc/def/"
17
+ describe '#base_filter' do
18
+ it 'return path with base_path' do
19
+ service.base_path = '/base_path'
20
+ service.send(:base_filter, true, '/abc/def/').must_equal '/base_path/abc/def/'
21
21
  end
22
22
 
23
- it "returns path only" do
24
- service.base_path = "/base_path"
25
- service.send(:base_filter, false, "/abc/def/").must_equal "/abc/def/"
23
+ it 'returns path only' do
24
+ service.base_path = '/base_path'
25
+ service.send(:base_filter, false, '/abc/def/').must_equal '/abc/def/'
26
26
  end
27
27
  end
28
28
 
29
- describe "#count_path_params" do
30
- it "returns number of path parameters from path" do
31
- service.send(:count_path_params, "/servers/{element1}/config/{element2}/{element3}").must_equal 3
29
+ describe '#count_path_params' do
30
+ it 'returns number of path parameters from path' do
31
+ service.send(:count_path_params, '/servers/{element1}/config/{element2}/{element3}').must_equal 3
32
32
  end
33
33
 
34
- it "returns 0 when no parameters in path" do
35
- service.send(:count_path_params, "/blah/bla").must_equal 0
34
+ it 'returns 0 when no parameters in path' do
35
+ service.send(:count_path_params, '/blah/bla').must_equal 0
36
36
  end
37
37
  end
38
38
 
39
- describe "#get_method" do
39
+ describe '#get_method' do
40
40
  class Service
41
41
  def self.api
42
42
  {
@@ -49,84 +49,84 @@ describe Misty::HTTP::MethodBuilder do
49
49
  end
50
50
  end
51
51
 
52
- it "successful find a existing method" do
53
- service.send(:get_method, :list_extensions).must_equal ({:path=>"/v2.0/extensions", :request=>:GET, :name=>:list_extensions})
52
+ it 'successful find a existing method' do
53
+ service.send(:get_method, :list_extensions).must_equal ({:path=>'/v2.0/extensions', :request=>:GET, :name=>:list_extensions})
54
54
  end
55
55
 
56
- it "returns nil when no method matches" do
56
+ it 'returns nil when no method matches' do
57
57
  service.send(:get_method, :incognito).must_be_nil
58
58
  end
59
59
  end
60
60
 
61
- describe "#inject_elements" do
62
- let(:path) { "/v3/domains/{domain_id}/groups/{group_id}/roles/{role_id}/projects" }
61
+ describe '#inject_elements' do
62
+ let(:path) { '/v3/domains/{domain_id}/groups/{group_id}/roles/{role_id}/projects' }
63
63
 
64
- it "replaces elements" do
65
- service.send(:inject_elements, path, ["id1", "id2", "id3"]).must_equal "/v3/domains/id1/groups/id2/roles/id3/projects"
64
+ it 'replaces elements' do
65
+ service.send(:inject_elements, path, ['id1', 'id2', 'id3']).must_equal '/v3/domains/id1/groups/id2/roles/id3/projects'
66
66
  end
67
67
 
68
- it "fails when not enough arguments" do
68
+ it 'fails when not enough arguments' do
69
69
  proc do
70
- service.send(:inject_elements, path, "id1", "id2")
70
+ service.send(:inject_elements, path, 'id1', 'id2')
71
71
  end.must_raise ArgumentError
72
72
  end
73
73
 
74
- it "return path when no match" do
75
- service.send(:inject_elements, "/v3/path", ["id1", "id2"]).must_equal "/v3/path"
74
+ it 'return path when no match' do
75
+ service.send(:inject_elements, '/v3/path', ['id1', 'id2']).must_equal '/v3/path'
76
76
  end
77
77
  end
78
78
 
79
- describe "#prefixed_path" do
80
- it "returns true and same path with empty prefix" do
79
+ describe '#prefixed_path' do
80
+ it 'returns true and same path with empty prefix' do
81
81
  class Service
82
82
  def self.prefix_path_to_ignore
83
- ""
83
+ ''
84
84
  end
85
85
  end
86
86
 
87
- path = "/v3/resources/type"
87
+ path = '/v3/resources/type'
88
88
  base, newpath = service.send(:prefixed_path, path)
89
89
  base.must_equal true
90
90
  newpath.must_equal path
91
91
  end
92
92
 
93
- it "returns false and same path when unmatched prefix" do
93
+ it 'returns false and same path when unmatched prefix' do
94
94
  class Service
95
95
  def self.prefix_path_to_ignore
96
- "/v3/{project_id}"
96
+ '/v3/{project_id}'
97
97
  end
98
98
  end
99
99
 
100
- path = "/v2/schemas/tasks"
100
+ path = '/v2/schemas/tasks'
101
101
  base, newpath = service.send(:prefixed_path, path)
102
102
  base.must_equal false
103
103
  newpath.must_equal path
104
104
  end
105
105
 
106
- it "returns true and filtered path when matched prefix" do
106
+ it 'returns true and filtered path when matched prefix' do
107
107
  class Service
108
108
  def self.prefix_path_to_ignore
109
- "/v3/{project_id}"
109
+ '/v3/{project_id}'
110
110
  end
111
111
  end
112
112
 
113
- path = "/v3/{project_id}/backups/detail"
113
+ path = '/v3/{project_id}/backups/detail'
114
114
  base, newpath = service.send(:prefixed_path, path)
115
115
  base.must_equal true
116
- newpath.must_equal "/backups/detail"
116
+ newpath.must_equal '/backups/detail'
117
117
  end
118
118
  end
119
119
 
120
- describe "#query_param" do
121
- it "returns string when passing a String" do
122
- service.send(:query_param, "name=foobar").must_equal "?name=foobar"
120
+ describe '#query_param' do
121
+ it 'returns string when passing a String' do
122
+ service.send(:query_param, 'name=foobar').must_equal '?name=foobar'
123
123
  end
124
124
 
125
- it "returns empty string when passing an empty String" do
126
- service.send(:query_param, "").must_equal ""
125
+ it 'returns empty string when passing an empty String' do
126
+ service.send(:query_param, '').must_equal ''
127
127
  end
128
128
 
129
- it "returns a query string when passing in a Hash" do
129
+ it 'returns a query string when passing in a Hash' do
130
130
  service.send(:query_param, {}).must_equal ''
131
131
 
132
132
  service.send(:query_param, {:foo => 'bar'}).must_equal '?foo=bar'
@@ -137,7 +137,7 @@ describe Misty::HTTP::MethodBuilder do
137
137
  service.send(:query_param, {'===' => 'Ëncøding is hárd!'}).must_equal '?%3D%3D%3D=%C3%8Bnc%C3%B8ding+is+h%C3%A1rd%21'
138
138
  end
139
139
 
140
- it "returns nil unless passing a String or Hash" do
140
+ it 'returns nil unless passing a String or Hash' do
141
141
  service.send(:query_param, 42).must_be_nil
142
142
  end
143
143
  end
@@ -5,42 +5,42 @@ require 'misty/http/request'
5
5
  describe Misty::HTTP::Request do
6
6
  let(:request_header) { {'Accept' => '*/*'} }
7
7
 
8
- describe "#decode?" do
8
+ describe '#decode?' do
9
9
  let(:response) do
10
- uri = URI.parse("http://localhost/")
10
+ uri = URI.parse('http://localhost/')
11
11
  http = Net::HTTP.new(uri.host, uri.port)
12
- request = Net::HTTP::Get.new("/resource", {})
12
+ request = Net::HTTP::Get.new('/resource', {})
13
13
  http.request(request)
14
14
  end
15
15
 
16
- it "true when response has a body" do
17
- stub_request(:get, "http://localhost/resource").
16
+ it 'true when response has a body' do
17
+ stub_request(:get, 'http://localhost/resource').
18
18
  with(:headers => {'Accept' => '*/*'}).
19
19
  to_return(:status => 200, :body => "{\"key\": \"value\"}", :headers => {'Content-Type' => 'application/json'})
20
20
 
21
21
  service.decode?(response).must_equal true
22
22
  end
23
23
 
24
- it "false when response has no content" do
25
- stub_request(:get, "http://localhost/resource").
24
+ it 'false when response has no content' do
25
+ stub_request(:get, 'http://localhost/resource').
26
26
  with(:headers => {'Accept' => '*/*'}).
27
27
  to_return(:status => 204, :body => nil, :headers => {'Content-Type' => 'application/json'})
28
28
 
29
- service.decode?(response).must_be_nil
29
+ service.decode?(response).must_equal false
30
30
  end
31
31
 
32
- it "false when content_type is JSON" do
33
- stub_request(:get, "http://localhost/resource").
32
+ it 'false when content_type is JSON' do
33
+ stub_request(:get, 'http://localhost/resource').
34
34
  with(:headers => request_header).
35
35
  to_return(:status => 200, :body => "{\"blah\": \"bla\"}")
36
36
 
37
- service(:json).decode?(response).must_be_nil
37
+ service(:json).decode?(response).must_equal false
38
38
  end
39
39
  end
40
40
 
41
- describe "http requests" do
42
- it "#http_copy" do
43
- stub_request(:copy, "http://localhost/resource").
41
+ describe 'http requests' do
42
+ it '#http_copy' do
43
+ stub_request(:copy, 'http://localhost/resource').
44
44
  with(:headers => request_header).
45
45
  to_return(:status => 202, :body => "{\"key\": \"value\"}")
46
46
 
@@ -49,8 +49,8 @@ describe Misty::HTTP::Request do
49
49
  response.body.wont_be_nil
50
50
  end
51
51
 
52
- it "#http_delete" do
53
- stub_request(:delete, "http://localhost/resource").
52
+ it '#http_delete' do
53
+ stub_request(:delete, 'http://localhost/resource').
54
54
  with(:headers => request_header).
55
55
  to_return(:status => 204, :body => '')
56
56
 
@@ -59,8 +59,8 @@ describe Misty::HTTP::Request do
59
59
  response.body.must_be_nil
60
60
  end
61
61
 
62
- it "#http_get" do
63
- stub_request(:get, "http://localhost/resource").
62
+ it '#http_get' do
63
+ stub_request(:get, 'http://localhost/resource').
64
64
  with(:headers => request_header).
65
65
  to_return(:status => 200, :body => "{\"key\": \"value\"}")
66
66
 
@@ -69,8 +69,8 @@ describe Misty::HTTP::Request do
69
69
  response.body.wont_be_empty
70
70
  end
71
71
 
72
- it "#http_head" do
73
- stub_request(:head, "http://localhost/resource").
72
+ it '#http_head' do
73
+ stub_request(:head, 'http://localhost/resource').
74
74
  with(:headers => request_header).
75
75
  to_return(:status => '200')
76
76
 
@@ -79,8 +79,8 @@ describe Misty::HTTP::Request do
79
79
  response.body.must_be_nil
80
80
  end
81
81
 
82
- it "#http_options" do
83
- stub_request(:options, "http://localhost/resource").
82
+ it '#http_options' do
83
+ stub_request(:options, 'http://localhost/resource').
84
84
  with(:headers => request_header).
85
85
  to_return(:status => '200')
86
86
 
@@ -88,36 +88,36 @@ describe Misty::HTTP::Request do
88
88
  response.must_be_kind_of Net::HTTPSuccess
89
89
  end
90
90
 
91
- it "#http_patch" do
92
- stub_request(:patch, "http://localhost/resource").
91
+ it '#http_patch' do
92
+ stub_request(:patch, 'http://localhost/resource').
93
93
  with(:headers => request_header).
94
94
  to_return(:status => 202, :body => "{\"key\": \"value\"}")
95
95
 
96
- response = service.http_patch('/resource', {}, "data" => "value")
96
+ response = service.http_patch('/resource', {}, 'data' => 'value')
97
97
  response.must_be_kind_of Net::HTTPAccepted
98
98
  response.body.wont_be_nil
99
99
  end
100
100
 
101
- it "#http_post" do
102
- stub_request(:post, "http://localhost/resource").
101
+ it '#http_post' do
102
+ stub_request(:post, 'http://localhost/resource').
103
103
  with(:headers => request_header).
104
104
  to_return(:status => 201)
105
105
 
106
- response = service.http_post('/resource', {}, "data" => "value")
106
+ response = service.http_post('/resource', {}, 'data' => 'value')
107
107
  response.must_be_kind_of Net::HTTPCreated
108
108
  end
109
109
 
110
- it "#http_put" do
111
- stub_request(:put, "http://localhost/resource").
110
+ it '#http_put' do
111
+ stub_request(:put, 'http://localhost/resource').
112
112
  with(:headers => request_header).
113
113
  to_return(:status => 200)
114
114
 
115
- response = service.http_put('/resource', {}, "data" => "value")
115
+ response = service.http_put('/resource', {}, 'data' => 'value')
116
116
  response.must_be_kind_of Net::HTTPOK
117
117
  end
118
118
 
119
- it "#http_to_s" do
120
- service.http_to_s('/resource', "headers", "data" => "value").must_equal "base_url='localhost:80', path='/resource', header=headers, data='{\"data\"=>\"value\"}'"
119
+ it '#http_to_s' do
120
+ service.http_to_s('/resource', 'headers', 'data' => 'value').must_equal "base_url='localhost:80', path='/resource', header=headers, data='{\"data\"=>\"value\"}'"
121
121
  end
122
122
  end
123
123
  end
@@ -11,124 +11,124 @@ def validate(service)
11
11
  end
12
12
 
13
13
  describe Misty do
14
- describe "#set_services" do
15
- it "has alarming service" do
14
+ describe '#set_services' do
15
+ it 'has alarming service' do
16
16
  service = Misty::services.find { |s| s.name == :alarming}
17
17
  validate(service)
18
18
  end
19
19
 
20
- it "has baremetal service" do
20
+ it 'has baremetal service' do
21
21
  service = Misty::services.find { |s| s.name == :baremetal}
22
22
  validate(service)
23
23
  end
24
24
 
25
- it "has block_storage service" do
25
+ it 'has block_storage service' do
26
26
  service = Misty::services.find { |s| s.name == :block_storage}
27
27
  validate(service)
28
28
  end
29
29
 
30
- it "has clustering service" do
30
+ it 'has clustering service' do
31
31
  service = Misty::services.find { |s| s.name == :clustering}
32
32
  validate(service)
33
33
  end
34
34
 
35
- it "has compute service" do
35
+ it 'has compute service' do
36
36
  service = Misty::services.find { |s| s.name == :compute}
37
37
  validate(service)
38
38
  end
39
39
 
40
- it "has container service" do
40
+ it 'has container service' do
41
41
  service = Misty::services.find { |s| s.name == :container}
42
42
  validate(service)
43
43
  end
44
44
 
45
- it "has data_processing service" do
45
+ it 'has data_processing service' do
46
46
  service = Misty::services.find { |s| s.name == :data_processing}
47
47
  validate(service)
48
48
  end
49
49
 
50
- it "has data_protection service" do
50
+ it 'has data_protection service' do
51
51
  service = Misty::services.find { |s| s.name == :data_protection}
52
52
  validate(service)
53
53
  end
54
54
 
55
- it "has database service" do
55
+ it 'has database service' do
56
56
  service = Misty::services.find { |s| s.name == :database}
57
57
  validate(service)
58
58
  end
59
59
 
60
- it "has dns service" do
60
+ it 'has dns service' do
61
61
  service = Misty::services.find { |s| s.name == :dns}
62
62
  validate(service)
63
63
  end
64
64
 
65
- it "has identity service" do
65
+ it 'has identity service' do
66
66
  service = Misty::services.find { |s| s.name == :identity}
67
67
  validate(service)
68
68
  end
69
69
 
70
- it "has image service" do
70
+ it 'has image service' do
71
71
  service = Misty::services.find { |s| s.name == :image}
72
72
  validate(service)
73
73
  end
74
74
 
75
- it "has messaging service" do
75
+ it 'has messaging service' do
76
76
  service = Misty::services.find { |s| s.name == :messaging}
77
77
  validate(service)
78
78
  end
79
79
 
80
- it "has metering service" do
80
+ it 'has metering service' do
81
81
  service = Misty::services.find { |s| s.name == :metering}
82
82
  validate(service)
83
83
  end
84
84
 
85
- it "has networking service" do
85
+ it 'has networking service' do
86
86
  service = Misty::services.find { |s| s.name == :networking}
87
87
  validate(service)
88
88
  end
89
89
 
90
- it "has object_storage service" do
90
+ it 'has object_storage service' do
91
91
  service = Misty::services.find { |s| s.name == :object_storage}
92
92
  validate(service)
93
93
  end
94
94
 
95
- it "has orchestration service" do
95
+ it 'has orchestration service' do
96
96
  service = Misty::services.find { |s| s.name == :orchestration}
97
97
  validate(service)
98
98
  end
99
99
 
100
- it "has search service" do
100
+ it 'has search service' do
101
101
  service = Misty::services.find { |s| s.name == :search}
102
102
  validate(service)
103
103
  end
104
104
 
105
- it "has shared_file_systems service" do
105
+ it 'has shared_file_systems service' do
106
106
  service = Misty::services.find { |s| s.name == :shared_file_systems}
107
107
  validate(service)
108
108
  end
109
109
 
110
- describe "#services" do
111
- it "returns Services" do
110
+ describe '#services' do
111
+ it 'returns Services' do
112
112
  services = Misty::services
113
113
  services.must_be_kind_of Misty::Services
114
114
  end
115
115
  end
116
116
  end
117
117
 
118
- describe "#to_json" do
119
- it "returns a JSON string when using a Ruby hash" do
120
- Misty.to_json({"key" => "val"}).must_be_kind_of String
118
+ describe '#to_json' do
119
+ it 'returns a JSON string when using a Ruby hash' do
120
+ Misty.to_json({'key' => 'val'}).must_be_kind_of String
121
121
  end
122
122
 
123
- it "returns same string when using a string" do
123
+ it 'returns same string when using a string' do
124
124
  data = "{\"key\": \"val\"}"
125
125
  response = Misty.to_json(data)
126
126
  response.must_be_kind_of String
127
127
  response.must_equal data
128
128
  end
129
129
 
130
- it "fails when using a string with non JSON data" do
131
- data = "key;val"
130
+ it 'fails when using a string with non JSON data' do
131
+ data = 'key;val'
132
132
  proc do
133
133
  response = Misty.to_json(data)
134
134
  end.must_raise JSON::ParserError