right_api_helper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,32 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "right_api_client"
19
+ require "yaml"
20
+
21
+ require 'right_api_helper/version'
22
+ require 'right_api_helper/base'
23
+ require 'right_api_helper/cache'
24
+ require 'right_api_helper/session'
25
+ require 'right_api_helper/api15'
26
+ require 'right_api_helper/deployments'
27
+ require 'right_api_helper/instances'
28
+ require 'right_api_helper/scripts/deployments_creator'
29
+
30
+ module RightApiHelper
31
+ # Hey now!
32
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'right_api_helper/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "right_api_helper"
8
+ spec.version = RightApiHelper::VERSION
9
+ spec.authors = ["caryp"]
10
+ spec.email = ["cary@rightscale.com"]
11
+ spec.summary = %q{A collection of helper objects and methods for right_api_client gem}
12
+ spec.description = %q{A collection of helper objects and methods for right_api_client gem}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "right_api_client", "~> 1.5.15"
22
+ spec.add_dependency "thor"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec"
27
+ spec.add_development_dependency "webmock"
28
+ spec.add_development_dependency "vcr", "~> 2.9.0"
29
+ spec.add_development_dependency "pry"
30
+ end
@@ -0,0 +1,280 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'json'
19
+ require 'right_api_client'
20
+ require 'right_api_helper'
21
+
22
+ describe "API15 object" do
23
+
24
+ BAD_USER_DATA = "RS_server=my.rightscale.com&RS_token=89eeb0b19af40b5b72668dc3caa9934a&RS_sketchy=sketchy1-166.rightscale.com"
25
+
26
+ before(:each) do
27
+ apiStub = double("RightApi::Client", :api_url => "http://foo.com", :log => "")
28
+ RightApi::Client.should_receive(:new).and_return(apiStub)
29
+ @right_api_client = RightApiHelper::Session.new.create_client("someemail", "somepasswd", "someaccountid", "https://my.rightscale.com")
30
+ @api = RightApiHelper::API15.new(@right_api_client)
31
+ end
32
+
33
+ it "should find deployment by name" do
34
+ deploymentsStub = double("deployments", :index => [ :name => "my_fake_deployment" ])
35
+ @api.instance_variable_get("@client").should_receive(:deployments).and_return(deploymentsStub)
36
+ @api.find_deployment_by_name("my_fake_deployment")
37
+ end
38
+
39
+ it "should raise error if deployment not found by name" do
40
+ deploymentsStub = double("deployments", :index => nil)
41
+ @api.instance_variable_get("@client").should_receive(:deployments).and_return(deploymentsStub)
42
+ lambda{@api.find_deployment_by_name("my_fake_deployment")}.should raise_error
43
+ end
44
+
45
+ it "should raise error if multiple deployments found by name" do
46
+ deploymentsStub = double("deployments", :index => [ {:name => "my_fake_deployment"}, {:name => "my_fake_deployment2"} ])
47
+ @api.instance_variable_get("@client").should_receive(:deployments).and_return(deploymentsStub)
48
+ lambda{@api.find_deployment_by_name("my_fake_deployment")}.should raise_error
49
+ end
50
+
51
+ it "should find server by name" do
52
+ serversStub = double("servers", :index => [ :name => "my_fake_server" ])
53
+ @api.instance_variable_get("@client").should_receive(:servers).and_return(serversStub)
54
+ @api.find_server_by_name("my_fake_server")
55
+ end
56
+
57
+ it "should raise error if multiple servers found by name" do
58
+ serversStub = double("servers", :index => [ {:name => "my_fake_server"}, {:name => "my_fake_server2"} ])
59
+ @api.instance_variable_get("@client").should_receive(:servers).and_return(serversStub)
60
+ lambda{@api.find_server_by_name("my_fake_server")}.should raise_error
61
+ end
62
+
63
+ it "should find cloud by name" do
64
+ cloudsStub = double("clouds", :index => [ :name => "my_fake_cloud" ])
65
+ @api.instance_variable_get("@client").should_receive(:clouds).and_return(cloudsStub)
66
+ @api.find_cloud_by_name("my_fake_cloud")
67
+ end
68
+
69
+ it "should raise error if cloud not found by name" do
70
+ cloudsStub = double("clouds", :index => nil)
71
+ @api.instance_variable_get("@client").should_receive(:clouds).and_return(cloudsStub)
72
+ lambda{@api.find_cloud_by_name("my_fake_cloud")}.should raise_error
73
+ end
74
+
75
+ it "should find MCI by name" do
76
+ mcisStub = double("multi_cloud_images", :index => [ :name => "my_fake_mci" ])
77
+ @api.instance_variable_get("@client").should_receive(:multi_cloud_images).and_return(mcisStub)
78
+ @api.find_mci_by_name("my_fake_mci")
79
+ end
80
+
81
+ it "should raise error if multiple MCI found by name" do
82
+ mcisStub = double("multi_cloud_images", :index => [ {:name => "my_fake_mci"}, {:name => "my_fake_mci2"} ])
83
+ @api.instance_variable_get("@client").should_receive(:multi_cloud_images).and_return(mcisStub)
84
+ lambda{@api.find_mci_by_name("my_fake_mci")}.should raise_error
85
+ end
86
+
87
+ it "should find servertemplate by name" do
88
+ servertemplatesStub = double("servertemplates", :index => [ double("servertemplate", :name => "my_fake_servertemplate", :revision => [0, 1, 2, 3, 4 ]) ])
89
+ @api.instance_variable_get("@client").should_receive(:server_templates).and_return(servertemplatesStub)
90
+ @api.find_servertemplate("my_fake_servertemplate")
91
+ end
92
+
93
+ it "should raise error if no servertemplates found by name" do
94
+ servertemplatesStub = double("servertemplates", :index => [])
95
+ @api.instance_variable_get("@client").should_receive(:server_templates).and_return(servertemplatesStub)
96
+ lambda{@api.find_servertemplate("my_fake_servertemplate")}.should raise_error
97
+ end
98
+
99
+ it "should raise error if multiple servertemplates found by name" do
100
+ servertemplatesStub = double("servertemplates", :index => [ double("servertemplate", :name => "my_fake_servertemplate"), double("servertemplate", :name => "my_fake_servertemplate") ])
101
+ @api.instance_variable_get("@client").should_receive(:server_templates).and_return(servertemplatesStub)
102
+ lambda{@api.find_servertemplate("my_fake_servertemplate")}.should raise_error
103
+ end
104
+
105
+ it "should find servertemplate by id" do
106
+ servertemplatesStub = double("servertemplates", :index => [ :name => "my_fake_servertemplate" ])
107
+ @api.instance_variable_get("@client").should_receive(:server_templates).and_return(servertemplatesStub)
108
+ @api.find_servertemplate(1234)
109
+ end
110
+
111
+ it "should create deployment" do
112
+ deploymentsStub = double("deployments", :create => [ {:name => "my_fake_deployment"} ])
113
+ @api.instance_variable_get("@client").should_receive(:deployments).and_return(deploymentsStub)
114
+ deploymentsStub.should_receive(:create)
115
+ @api.create_deployment("my_deployment")
116
+ end
117
+
118
+ it "should destroy a deployment" do
119
+ deploymentsStub = double("deployments", :destroy => nil)
120
+ deploymentsStub.should_receive(:destroy)
121
+ @api.destroy_deployment(deploymentsStub)
122
+ end
123
+
124
+ it "should create server with the default MCI" do
125
+ dStub = double("deployment", :href => "/some/fake/path")
126
+ dsStub = double("deployments", :show => dStub)
127
+ @api.should_receive(:create_deployment).and_return(dsStub)
128
+ deployment = @api.create_deployment("my_deployment")
129
+
130
+ stStub = double("servertemplate", :href => "/some/fake/path", :show => "")
131
+ stsStub = double("servertemplates", :show => stStub)
132
+ @api.should_receive(:find_servertemplate).and_return(stsStub)
133
+ server_template = @api.find_servertemplate(1234)
134
+
135
+ cStub = double("cloud", :href => "/some/fake/path")
136
+ csStub = double("clouds", :show => cStub)
137
+ @api.should_receive(:find_cloud_by_name).and_return(csStub)
138
+ cloud = @api.find_cloud_by_name(1234)
139
+
140
+ serversStub = double("servers", :create => [ :name => "my_fake_server" ])
141
+ @api.instance_variable_get("@client").should_receive(:servers).and_return(serversStub)
142
+ @api.create_server(deployment, server_template, nil, cloud, "my_fake_server")
143
+ end
144
+
145
+ it "should create server with the MCI given" do
146
+ dStub = double("deployment", :href => "/some/fake/path")
147
+ dsStub = double("deployments", :show => dStub)
148
+ @api.should_receive(:create_deployment).and_return(dsStub)
149
+ deployment = @api.create_deployment("my_deployment")
150
+
151
+ stStub = double("servertemplate", :href => "/some/fake/path", :show => "")
152
+ stsStub = double("servertemplates", :show => stStub)
153
+ @api.should_receive(:find_servertemplate).and_return(stsStub)
154
+ server_template = @api.find_servertemplate(1234)
155
+
156
+ mciStub = double("mci", :href => "/some/fake/path")
157
+ mcisStub = double("mcis", :show => mciStub)
158
+ @api.should_receive(:find_mci_by_name).and_return(mcisStub)
159
+ mci = @api.find_mci_by_name("CentOS")
160
+
161
+ cStub = double("cloud", :href => "/some/fake/path")
162
+ csStub = double("clouds", :show => cStub)
163
+ @api.should_receive(:find_cloud_by_name).and_return(csStub)
164
+ cloud = @api.find_cloud_by_name(1234)
165
+
166
+ serversStub = double("servers", :create => [ :name => "my_fake_server" ])
167
+ @api.instance_variable_get("@client").should_receive(:servers).and_return(serversStub)
168
+ @api.create_server(deployment, server_template, mci, cloud, "my_fake_server")
169
+ end
170
+
171
+ it "should launch server with inputs" do
172
+ serverStub = double("server", :name => "foo")
173
+ serversStub = double("servers", :launch => true, :show => serverStub, :index => [ :name => "my_fake_server" ])
174
+ @api.should_receive(:create_server).and_return(serversStub)
175
+ server = @api.create_server("foo", "bar", "my_fake_server")
176
+ @api.instance_variable_get("@client").should_receive(:servers).and_return(serversStub)
177
+ @api.launch_server(server, [ {:name => "input1", :value => 1} ])
178
+ end
179
+
180
+ it "should launch server without inputs" do
181
+ serverStub = double("server", :name => "foo")
182
+ serversStub = double("servers", :launch => true, :show => serverStub, :index => [ :name => "my_fake_server" ])
183
+ @api.should_receive(:create_server).and_return(serversStub)
184
+ server = @api.create_server("foo", "bar", "my_fake_server")
185
+ @api.instance_variable_get("@client").should_receive(:servers).and_return(serversStub)
186
+ @api.launch_server(server)
187
+ end
188
+
189
+ it "returns user_data" do
190
+ instanceDataStub = double("idata", :user_data => "someuserdata")
191
+ instanceStub = double("instance", :show => instanceDataStub)
192
+ serverDataStub = double("sdata", :current_instance => instanceStub)
193
+ serverStub = double("server", :show => serverDataStub)
194
+ serverDataStub.should_receive(:current_instance).with(:view=>"extended")
195
+ @api.user_data(serverStub).should == "someuserdata"
196
+ end
197
+
198
+ it "returns data_request_url for instance" do
199
+ @user_data = "RS_rn_url=amqp://b915586461:278a854748@orange2-broker.test.rightscale.com/right_net&RS_rn_id=4985249009&RS_server=orange2-moo.test.rightscale.com&RS_rn_auth=d98106775832c174ffd55bd7b7cb175077574adf&RS_token=b233a57d1d24f27bd8650d0f9b6bfd54&RS_sketchy=sketchy1-145.rightscale.com&RS_rn_host=:0"
200
+ @request_data_url = "https://my.rightscale.com/servers/data_injection_payload/d98106775832c174ffd55bd7b7cb175077574adf"
201
+ @right_api_client.should_receive(:api_url).and_return("https://my.rightscale.com")
202
+ @api.data_request_url(@user_data).should == @request_data_url
203
+ end
204
+
205
+ it "returns true if server has a current instance" do
206
+ serverDataStub = double("sdata", :api_methods => [:current_instance])
207
+ serverStub = double("server", :show => serverDataStub)
208
+ @api.is_provisioned?(serverStub).should == true
209
+ end
210
+
211
+ it "returns false if server does not have a current instance" do
212
+ serverDataStub = double("sdata", :api_methods => [])
213
+ serverStub = double("server", :show => serverDataStub)
214
+ @api.is_provisioned?(serverStub).should == false
215
+ end
216
+
217
+ it "will not wait if server is in expected state" do
218
+ @api.should_receive(:server_state).and_return("booting")
219
+ @api.server_wait_for_state("fakeserver", "booting")
220
+ end
221
+
222
+ it "throws an error if server is stranded" do
223
+ @api.should_receive(:server_state).and_return("stranded")
224
+ @api.set_bad_states([ "stranded", "terminated"])
225
+ lambda{@api.server_wait_for_state("fakeserver", "operational")}.should raise_error
226
+ end
227
+
228
+ it "returns the server's cloud" do
229
+ cData = double("clouddata", :name => "cloudname")
230
+ cStub = double("cloud", :show => cData)
231
+ @api.should_receive(:instance_from_server)
232
+ @api.should_receive(:cloud_from_instance).and_return(cStub)
233
+ @api.server_cloud_name("foo").should == "cloudname"
234
+ end
235
+
236
+ it "returns the current instance from the server is provisioned" do
237
+ serverDataStub = double("sdata", :current_instance => "current")
238
+ serverStub = double("server", :show => serverDataStub)
239
+ @api.should_receive(:is_provisioned?).and_return(true)
240
+ @api.send(:instance_from_server, serverStub).should == "current"
241
+ end
242
+
243
+ it "returns the next instance from the server is not provisioned" do
244
+ serverDataStub = double("sdata", :next_instance => "next")
245
+ serverStub = double("server", :show => serverDataStub)
246
+ @api.should_receive(:is_provisioned?).and_return(false)
247
+ @api.send(:instance_from_server, serverStub).should == "next"
248
+ end
249
+
250
+ it "returns server state" do
251
+ instanceDataStub = double("idata", :state => "booting")
252
+ instanceStub = double("instance", :show => instanceDataStub)
253
+ @api.should_receive(:instance_from_server).and_return(instanceStub)
254
+ @api.send(:server_state, "server").should == "booting"
255
+ end
256
+
257
+ it "returns the cloud from the instance" do
258
+ instanceDataStub = double("idata", :cloud => "somecloudobj")
259
+ instanceStub = double("instance", :show => instanceDataStub)
260
+ @api.send(:cloud_from_instance, instanceStub).should == "somecloudobj"
261
+ end
262
+
263
+ it "sets inputs on the next instance" do
264
+ inputsStub = double("inputs")
265
+ inputsStub.should_receive(:multi_update).with({"inputs" => "heynow"})
266
+ instanceDataStub = double("idata", :inputs => inputsStub)
267
+ instanceStub = double("instance", :show => instanceDataStub)
268
+ serverDataStub = double("sdata", :next_instance => instanceStub)
269
+ serverStub = double("server", :show => serverDataStub)
270
+ @api.set_server_inputs(serverStub, "heynow")
271
+ end
272
+
273
+ it "terminates a server" do
274
+ serverStub = double("server")
275
+ serverStub.should_receive(:terminate)
276
+ @api.terminate_server(serverStub)
277
+ end
278
+
279
+
280
+ end
@@ -0,0 +1,57 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+
20
+ describe RightApiHelper::Cache do
21
+
22
+ before(:each) do
23
+ @helper = RightApiHelper::Cache.new("test_cache")
24
+ @helper.logger(double("Logger", :info => nil))
25
+ @test_hash = { "lame saying" => "hey now!", :foo => :bar }
26
+ end
27
+
28
+ it "clears a cache file" do
29
+ File.should_receive(:exists?).exactly(1).and_return(true)
30
+ File.should_receive(:delete).exactly(1)
31
+ @helper.clear
32
+ end
33
+
34
+ it "does not clear a cache file if it does not exist" do
35
+ File.should_receive(:exists?).exactly(1).and_return(false)
36
+ File.should_receive(:delete).exactly(0)
37
+ @helper.clear
38
+ end
39
+
40
+ it "returns nil if no cache file" do
41
+ File.should_receive(:exists?).exactly(1).and_return(false)
42
+ @helper.get.should == nil
43
+ end
44
+
45
+ it "writes a hash to a cache file" do
46
+ io_stub = double('fakefile', :write => nil)
47
+ File.should_receive(:open).and_return(io_stub)
48
+ @helper.set(@test_hash)
49
+ end
50
+
51
+ it "returns cache file contents" do
52
+ File.should_receive(:exists?).exactly(1).and_return(true)
53
+ File.should_receive(:open).and_return(YAML.dump(@test_hash))
54
+ @helper.get.should == @test_hash
55
+ end
56
+
57
+ end
@@ -0,0 +1,44 @@
1
+ {
2
+ "deployments": [
3
+ {
4
+ "name": "test-prefix-zensmartfeedpool-a-zookeeper",
5
+ "members": [
6
+ {
7
+ "href": "/api/clouds/3/instances/81UFDJ84L77VP",
8
+ "type": "Instance",
9
+ "name": "zookeeper002"
10
+ },
11
+ {
12
+ "href": "/api/clouds/3/instances/CST1BOUCO79MV",
13
+ "type": "Instance",
14
+ "name": "zookeeper001"
15
+ },
16
+ {
17
+ "href": "/api/clouds/3/instances/2BMBTLFSR3K7T",
18
+ "type": "Instance",
19
+ "name": "zookeeper001"
20
+ }
21
+ ]
22
+ },
23
+ {
24
+ "name": "test-prefix-zensmartfeedpool-b-zookeeper",
25
+ "members": [
26
+ {
27
+ "href": "/api/clouds/3/instances/E3F9H5G2M7D05",
28
+ "type": "Instance",
29
+ "name": "zookeeper002"
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "name": "test-prefix-zensmartfeedpool-a-zook",
35
+ "members": [
36
+ {
37
+ "href": "/api/clouds/3/instances/18UBA2151G2BQ",
38
+ "type": "Instance",
39
+ "name": "zook0023"
40
+ }
41
+ ]
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,57 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+
20
+ describe RightApiHelper::Deployments do
21
+
22
+ before(:all) do
23
+ # Get API session
24
+ VCR.use_cassette('right_api_session') do
25
+ session = RightApiHelper::Session.new
26
+ session.should_receive(:setup_client_logging)
27
+ @right_api_client = session.create_client_from_file("~/.right_api_client/login.yml")
28
+ end
29
+ VCR.use_cassette('right_api_general') do
30
+ @deployment_helper = RightApiHelper::Deployments.new(@right_api_client)
31
+ @logger = stub("Logger")
32
+ @deployment_helper.logger(@logger)
33
+ end
34
+ end
35
+
36
+ it "finds existing deployments" do
37
+ VCR.use_cassette('right_api_general') do
38
+ @logger.should_receive(:info).exactly(2)
39
+ deployment = @deployment_helper.find_or_create("Default")
40
+ deployment.name.should == "Default"
41
+ end
42
+ end
43
+
44
+ it "creates new deployment if not found" do
45
+ VCR.use_cassette('right_api_general') do
46
+ @logger.should_receive(:info).exactly(3)
47
+ deployment = @deployment_helper.find_or_create("TEST:right_api_helper deleteme!")
48
+ deployment.show.name.should == "TEST:right_api_helper deleteme!"
49
+ deployment.destroy
50
+ end
51
+ end
52
+
53
+ it "adds an instance to a deployment" do
54
+ pending("this feature not yet supported by RightScale API")
55
+ end
56
+
57
+ end
@@ -0,0 +1,41 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+
20
+ describe RightApiHelper::Instances do
21
+
22
+ before(:all) do
23
+ # Get API session
24
+ VCR.use_cassette('right_api_session') do
25
+ session = RightApiHelper::Session.new
26
+ session.should_receive(:setup_client_logging)
27
+ @right_api_client = session.create_client_from_file("~/.right_api_client/login.yml")
28
+ end
29
+ VCR.use_cassette('right_api_general') do
30
+ @helper = RightApiHelper::Instances.new(@right_api_client)
31
+ end
32
+ end
33
+
34
+ it "gets all instances in account" do
35
+ VCR.use_cassette('right_api_general') do
36
+ instances = @helper.get_instances
37
+ instances.should_not == nil
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,59 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'right_api_helper'
19
+
20
+ describe RightApiHelper::DeploymentsCreator do
21
+
22
+ before(:all) do
23
+ @dc = RightApiHelper::DeploymentsCreator.new
24
+ end
25
+
26
+ @real_file = File.join(File.dirname(__FILE__),"..","data","deployments.json")
27
+ let (:bogus_file) { File.join(File.dirname(__FILE__),"..","data","iamnothere.json") }
28
+
29
+ it "exits with error if no argument is passed" do
30
+ argv = []
31
+ @dc.should_receive(:log_error)
32
+ lambda{ @dc.run(argv) }.should raise_error SystemExit
33
+ end
34
+
35
+ it "exits with error argument empty filename is passed" do
36
+ argv = [""]
37
+ @dc.should_receive(:log_error)
38
+ lambda{ @dc.run(argv) }.should raise_error SystemExit
39
+ end
40
+
41
+ it "exits with error invalid filename is passed" do
42
+ argv = [ File.join(File.dirname(__FILE__),"..","data","iamnothere.json") ]
43
+ @dc.should_receive(:log_error)
44
+ lambda{ @dc.run(argv) }.should raise_error SystemExit
45
+ end
46
+
47
+ it "reads a json file into memory" do
48
+ # grab test data
49
+ test_file = File.join(File.dirname(__FILE__),"..","data","deployments.json")
50
+ test_data = File.open(test_file, "r") {|f| f.read }
51
+
52
+ # Compare class json with test data
53
+ argv = [ File.join(File.dirname(__FILE__),"..","data","deployments.json") ]
54
+ @dc.run(argv)
55
+
56
+ @dc.instance_variable_get("@json").should == test_data
57
+ end
58
+
59
+ end
@@ -0,0 +1,46 @@
1
+ #
2
+ # Author: cary@rightscale.com
3
+ # Copyright 2014 RightScale, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+
20
+ describe RightApiHelper::Session do
21
+
22
+ it "creates an client" do
23
+ VCR.use_cassette('right_api_session') do
24
+ apiStub = double("RightApi::Client", :api_url => "http://foo.com", :log => "")
25
+ RightApi::Client.should_receive(:new).and_return(apiStub)
26
+ session = RightApiHelper::Session.new
27
+ session.should_receive(:setup_client_logging)
28
+ session.logger(double("Logger"))
29
+ @client = session.create_client("someemail", "somepasswd", "someaccountid", "https://my.rightscale.com")
30
+ @client.should_not == nil
31
+ end
32
+ end
33
+
34
+ it "creates an client from file" do
35
+ VCR.use_cassette('right_api_session') do
36
+ apiStub = double("RightApi::Client", :api_url => "http://foo.com", :log => "")
37
+ RightApi::Client.should_receive(:new).and_return(apiStub)
38
+ session = RightApiHelper::Session.new
39
+ session.should_receive(:setup_client_logging)
40
+ session.logger(double("Logger"))
41
+ @client = session.create_client_from_file("~/.right_api_client/login.yml")
42
+ @client.should_not == nil
43
+ end
44
+ end
45
+
46
+ end