cloudfoundry-client 0.1.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.
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +12 -0
- data/.yardopts +9 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +122 -0
- data/Rakefile +28 -0
- data/cloudfoundry.gemspec +29 -0
- data/lib/cloudfoundry.rb +34 -0
- data/lib/cloudfoundry/client.rb +93 -0
- data/lib/cloudfoundry/client/apps.rb +192 -0
- data/lib/cloudfoundry/client/info.rb +29 -0
- data/lib/cloudfoundry/client/request.rb +89 -0
- data/lib/cloudfoundry/client/resources.rb +16 -0
- data/lib/cloudfoundry/client/response.rb +68 -0
- data/lib/cloudfoundry/client/services.rb +122 -0
- data/lib/cloudfoundry/client/users.rb +121 -0
- data/lib/cloudfoundry/constants.rb +30 -0
- data/lib/cloudfoundry/exception.rb +24 -0
- data/lib/cloudfoundry/version.rb +27 -0
- data/spec/client/apps_spec.rb +423 -0
- data/spec/client/info_spec.rb +92 -0
- data/spec/client/resources_spec.rb +52 -0
- data/spec/client/services_spec.rb +230 -0
- data/spec/client/users_spec.rb +367 -0
- data/spec/client_spec.rb +110 -0
- data/spec/cloudfoundry_spec.rb +62 -0
- data/spec/fixtures/admin_logged/client.yml +85 -0
- data/spec/fixtures/admin_logged/users.yml +363 -0
- data/spec/fixtures/admin_logged/users_create_action.yml +36 -0
- data/spec/fixtures/admin_logged/users_proxy_action.yml +46 -0
- data/spec/fixtures/admin_logged/users_proxy_nouser_action.yml +44 -0
- data/spec/fixtures/admin_logged/users_unproxy_action.yml +44 -0
- data/spec/fixtures/app.js +16 -0
- data/spec/fixtures/app.zip +0 -0
- data/spec/fixtures/client.yml +151 -0
- data/spec/fixtures/client_invalid.yml +85 -0
- data/spec/fixtures/cloudfoundry.yml +124 -0
- data/spec/fixtures/cloudfoundry_vs_client.yml +159 -0
- data/spec/fixtures/no_logged/apps.yml +42 -0
- data/spec/fixtures/no_logged/client.yml +42 -0
- data/spec/fixtures/no_logged/info.yml +81 -0
- data/spec/fixtures/no_logged/resources.yml +42 -0
- data/spec/fixtures/no_logged/services.yml +42 -0
- data/spec/fixtures/no_logged/users.yml +108 -0
- data/spec/fixtures/no_logged/users_login_action.yml +81 -0
- data/spec/fixtures/no_logged/users_proxy_action.yml +42 -0
- data/spec/fixtures/no_logged/users_unproxy_action.yml +42 -0
- data/spec/fixtures/user_logged/apps.yml +828 -0
- data/spec/fixtures/user_logged/apps_create_action.yml +42 -0
- data/spec/fixtures/user_logged/apps_directory_action.yml +48 -0
- data/spec/fixtures/user_logged/apps_download_action.yml +55 -0
- data/spec/fixtures/user_logged/apps_file_action.yml +54 -0
- data/spec/fixtures/user_logged/apps_start_action.yml +81 -0
- data/spec/fixtures/user_logged/apps_stats_action.yml +44 -0
- data/spec/fixtures/user_logged/apps_update_info_action.yml +44 -0
- data/spec/fixtures/user_logged/apps_upload_filename_action.yml +62 -0
- data/spec/fixtures/user_logged/apps_upload_zipfile_action.yml +62 -0
- data/spec/fixtures/user_logged/client.yml +85 -0
- data/spec/fixtures/user_logged/info.yml +126 -0
- data/spec/fixtures/user_logged/resources.yml +44 -0
- data/spec/fixtures/user_logged/resources_check_action.yml +42 -0
- data/spec/fixtures/user_logged/services.yml +354 -0
- data/spec/fixtures/user_logged/services_bind_action.yml +161 -0
- data/spec/fixtures/user_logged/services_create_action.yml +83 -0
- data/spec/fixtures/user_logged/services_unbind_action.yml +122 -0
- data/spec/fixtures/user_logged/services_unbind_fail_action.yml +122 -0
- data/spec/fixtures/user_logged/users.yml +299 -0
- data/spec/fixtures/user_logged/users_proxy_action.yml +44 -0
- data/spec/fixtures/user_logged/users_unproxy_action.yml +44 -0
- data/spec/spec_helper.rb +29 -0
- data/spec/support/cf_connection_helper.rb +26 -0
- data/spec/support/vcr.rb +8 -0
- metadata +235 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
module CloudFoundry
|
2
|
+
class Client
|
3
|
+
# The HTTP connection adapter that will be used to connect if none is set.
|
4
|
+
DEFAULT_ADAPTER = :net_http
|
5
|
+
|
6
|
+
# Default CloudFoundry API Target URL.
|
7
|
+
DEFAULT_TARGET = "http://api.vcap.me"
|
8
|
+
|
9
|
+
# CloudFoundry API Info Path.
|
10
|
+
CLOUD_INFO_PATH = "/info"
|
11
|
+
|
12
|
+
# CloudFoundry API System Services Info Path.
|
13
|
+
CLOUD_SERVICES_INFO_PATH = "/info/services"
|
14
|
+
|
15
|
+
# CloudFoundry API Runtimes Info Path.
|
16
|
+
CLOUD_RUNTIMES_INFO_PATH = "/info/runtimes"
|
17
|
+
|
18
|
+
# CloudFoundry API Applications Path.
|
19
|
+
APPS_PATH = "/apps"
|
20
|
+
|
21
|
+
# CloudFoundry API Resources Path.
|
22
|
+
RESOURCES_PATH = "/resources"
|
23
|
+
|
24
|
+
# CloudFoundry API Services Path.
|
25
|
+
SERVICES_PATH = "/services"
|
26
|
+
|
27
|
+
# CloudFoundry API Users Path.
|
28
|
+
USERS_PATH = "/users"
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CloudFoundry
|
2
|
+
class Client
|
3
|
+
# CloudFoundry::Client Exceptions.
|
4
|
+
module Exception
|
5
|
+
# CloudFoundry Client Exception: Authorization Error.
|
6
|
+
class AuthError < RuntimeError; end
|
7
|
+
# CloudFoundry Client Exception: Bad Parameters.
|
8
|
+
class BadParams < RuntimeError; end
|
9
|
+
# CloudFoundry Client Exception: Bad Response Received.
|
10
|
+
class BadResponse < RuntimeError; end
|
11
|
+
|
12
|
+
# CloudFoundry Cloud Exception: Bad Request.
|
13
|
+
class BadRequest < RuntimeError; end
|
14
|
+
# CloudFoundry Cloud Exception: Forbidden.
|
15
|
+
class Forbidden < RuntimeError; end
|
16
|
+
# CloudFoundry Cloud Exception: Not Found.
|
17
|
+
class NotFound < RuntimeError; end
|
18
|
+
# CloudFoundry Cloud Exception: Server Error.
|
19
|
+
class ServerError < RuntimeError; end
|
20
|
+
# CloudFoundry Cloud Exception: Bad Gateway.
|
21
|
+
class BadGateway < RuntimeError; end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CloudFoundry
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Major CloudFoundry::Client Version.
|
5
|
+
def self.major
|
6
|
+
0
|
7
|
+
end
|
8
|
+
|
9
|
+
# Minor CloudFoundry::Client Version.
|
10
|
+
def self.minor
|
11
|
+
1
|
12
|
+
end
|
13
|
+
|
14
|
+
# Patch CloudFoundry::Client Version.
|
15
|
+
def self.patch
|
16
|
+
0
|
17
|
+
end
|
18
|
+
|
19
|
+
# Pre CloudFoundry::Client Version.
|
20
|
+
def self.pre
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
# CloudFoundry::Client Version.
|
25
|
+
VERSION = [major, minor, patch, pre].compact.join(".")
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,423 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Cloudfoundry::Client::Apps" do
|
4
|
+
include CfConnectionHelper
|
5
|
+
|
6
|
+
context "without a user logged in" do
|
7
|
+
before(:all) do
|
8
|
+
VCR.use_cassette("no_logged/client", :record => :new_episodes) do
|
9
|
+
@cf_client = client_no_logged()
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
use_vcr_cassette "no_logged/apps", :record => :new_episodes
|
14
|
+
|
15
|
+
it "should raise an AuthError exception when creating an application" do
|
16
|
+
expect {
|
17
|
+
created = @cf_client.create_app("newapp")
|
18
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should raise an AuthError exception when listing all applications at target cloud" do
|
22
|
+
expect {
|
23
|
+
apps = @cf_client.list_apps()
|
24
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should raise an AuthError exception when retrieving basic application information from target cloud" do
|
28
|
+
expect {
|
29
|
+
app_info = @cf_client.app_info("newapp")
|
30
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should raise an AuthError exception when retrieving application instances information from target cloud" do
|
34
|
+
expect {
|
35
|
+
app_instances = @cf_client.app_instances("newapp")
|
36
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should raise an AuthError exception when retrieving application stats information from target cloud" do
|
40
|
+
expect {
|
41
|
+
app_stats = @cf_client.app_stats("newapp")
|
42
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should raise an AuthError exception when retrieving application crashes information from target cloud" do
|
46
|
+
expect {
|
47
|
+
app_crashes = @cf_client.app_crashes("newapp")
|
48
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should raise an AuthError exception when retrieving application files information from target cloud" do
|
52
|
+
expect {
|
53
|
+
app_files = @cf_client.app_files("newapp")
|
54
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should raise an AuthError exception when updating an application at target cloud" do
|
58
|
+
expect {
|
59
|
+
updated = @cf_client.update_app("newapp")
|
60
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should raise an AuthError exception when retrieving application update status information from target cloud" do
|
64
|
+
expect {
|
65
|
+
update_info = @cf_client.update_app_info("newapp")
|
66
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should raise an AuthError exception when uploading application bits to target cloud" do
|
70
|
+
expect {
|
71
|
+
appfile = spec_fixture("app.zip")
|
72
|
+
upload = @cf_client.upload_app("newapp", appfile)
|
73
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should raise an AuthError exception when application bits at target cloud" do
|
77
|
+
expect {
|
78
|
+
appbits = @cf_client.download_app("newapp")
|
79
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should raise an AuthError exception when deleting an application at target cloud" do
|
83
|
+
expect {
|
84
|
+
deleted = @cf_client.delete_app("newapp")
|
85
|
+
}.to raise_exception(CloudFoundry::Client::Exception::AuthError)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context "with a user logged in" do
|
90
|
+
before(:all) do
|
91
|
+
VCR.use_cassette("user_logged/client", :record => :new_episodes) do
|
92
|
+
@cf_client = client_user_logged()
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
use_vcr_cassette "user_logged/apps", :record => :new_episodes
|
97
|
+
|
98
|
+
it "should raise a BadParams exception when creating an application with a blank application name" do
|
99
|
+
expect {
|
100
|
+
created = @cf_client.create_app("")
|
101
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should raise a BadParams exception when creating an application with no manifest" do
|
105
|
+
expect {
|
106
|
+
created = @cf_client.create_app("newapp")
|
107
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should raise a BadRequest exception when creating an application with an invalid manifest" do
|
111
|
+
expect {
|
112
|
+
manifest = {
|
113
|
+
:name => "newapp",
|
114
|
+
}
|
115
|
+
created = @cf_client.create_app("newapp", manifest)
|
116
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadRequest)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should return true if a new application is created at target cloud" do
|
120
|
+
VCR.use_cassette("user_logged/apps_create_action", :record => :new_episodes, :exclusive => true) do
|
121
|
+
manifest = {
|
122
|
+
:name => "newapp",
|
123
|
+
:uris => ["newapp.vcap.me"],
|
124
|
+
:instances => 1,
|
125
|
+
:staging => {:model => "node"},
|
126
|
+
:resources => {:memory => 64}
|
127
|
+
}
|
128
|
+
created = @cf_client.create_app("newapp", manifest)
|
129
|
+
created.should be_true
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should get a proper list of apps at target cloud" do
|
134
|
+
apps = @cf_client.list_apps()
|
135
|
+
apps.should have_at_least(1).items
|
136
|
+
app_info = apps.first
|
137
|
+
app_info.should have_key :name
|
138
|
+
app_info.should have_key :staging
|
139
|
+
app_info.should have_key :uris
|
140
|
+
app_info.should have_key :instances
|
141
|
+
app_info.should have_key :runningInstances
|
142
|
+
app_info.should have_key :resources
|
143
|
+
app_info.should have_key :state
|
144
|
+
app_info.should have_key :services
|
145
|
+
app_info.should have_key :version
|
146
|
+
app_info.should have_key :env
|
147
|
+
app_info.should have_key :meta
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should raise an BadParams exception when retrieving basic information with blank application name" do
|
151
|
+
expect {
|
152
|
+
app_info = @cf_client.app_info("")
|
153
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should raise an NotFound exception when retrieving basic information for an application that does not exists at target cloud" do
|
157
|
+
expect {
|
158
|
+
app_info = @cf_client.app_info("noapp")
|
159
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should properly get basic application information from target cloud" do
|
163
|
+
app_info = @cf_client.app_info("newapp")
|
164
|
+
app_info.should have_key :name
|
165
|
+
app_info.should have_key :staging
|
166
|
+
app_info.should have_key :uris
|
167
|
+
app_info.should have_key :instances
|
168
|
+
app_info.should have_key :runningInstances
|
169
|
+
app_info.should have_key :resources
|
170
|
+
app_info.should have_key :state
|
171
|
+
app_info.should have_key :services
|
172
|
+
app_info.should have_key :version
|
173
|
+
app_info.should have_key :env
|
174
|
+
app_info.should have_key :meta
|
175
|
+
end
|
176
|
+
|
177
|
+
it "should raise an BadParams exception when retrieving instances information with blank application name" do
|
178
|
+
expect {
|
179
|
+
app_instances = @cf_client.app_instances("")
|
180
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should raise an NotFound exception when retrieving instances information for an application that does not exists at target cloud" do
|
184
|
+
expect {
|
185
|
+
app_instances = @cf_client.app_instances("noapp")
|
186
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should properly get application instances information from target cloud" do
|
190
|
+
app_instances = @cf_client.app_instances("newapp")
|
191
|
+
app_instances.should have_key :instances
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should raise an BadParams exception when retrieving stats information with blank application name" do
|
195
|
+
expect {
|
196
|
+
app_stats = @cf_client.app_stats("")
|
197
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should raise an NotFound exception when retrieving stats information for an application that does not exists at target cloud" do
|
201
|
+
expect {
|
202
|
+
app_stats = @cf_client.app_stats("noapp")
|
203
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should properly get empty application stats information from target cloud" do
|
207
|
+
app_stats = @cf_client.app_stats("newapp")
|
208
|
+
app_stats.should be_empty
|
209
|
+
end
|
210
|
+
|
211
|
+
it "should raise an BadParams exception when retrieving crashes information with blank application name" do
|
212
|
+
expect {
|
213
|
+
app_crashes = @cf_client.app_crashes("")
|
214
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should raise an NotFound exception when retrieving crashes information for an application that does not exists at target cloud" do
|
218
|
+
expect {
|
219
|
+
app_crashes = @cf_client.app_crashes("noapp")
|
220
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
221
|
+
end
|
222
|
+
|
223
|
+
it "should properly get application crashes information from target cloud" do
|
224
|
+
app_crashes = @cf_client.app_crashes("newapp")
|
225
|
+
app_crashes.should have_key :crashes
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should raise an BadParams exception when retrieving files information with blank application name" do
|
229
|
+
expect {
|
230
|
+
app_files = @cf_client.app_files("")
|
231
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should raise an NotFound exception when retrieving files information for an application that does not exists at target cloud" do
|
235
|
+
expect {
|
236
|
+
app_files = @cf_client.app_files("noapp")
|
237
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should raise an BadRequest exception when retrieving files information for an application without bits at target cloud" do
|
241
|
+
expect {
|
242
|
+
app_files = @cf_client.app_files("newapp")
|
243
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadRequest)
|
244
|
+
end
|
245
|
+
|
246
|
+
it "should raise a BadParams exception when updating an application with a blank name" do
|
247
|
+
expect {
|
248
|
+
updated = @cf_client.update_app("")
|
249
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
250
|
+
end
|
251
|
+
|
252
|
+
it "should raise a BadParams exception when updating an application with no manifest" do
|
253
|
+
expect {
|
254
|
+
updated = @cf_client.update_app("newapp")
|
255
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should raise a NotFound exception when updating an application that does not exists at target cloud" do
|
259
|
+
expect {
|
260
|
+
manifest = {
|
261
|
+
:name => "noapp",
|
262
|
+
}
|
263
|
+
updated = @cf_client.update_app("noapp", manifest)
|
264
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
265
|
+
end
|
266
|
+
|
267
|
+
it "should return true if an application is updated at target cloud" do
|
268
|
+
app_info = @cf_client.app_info("newapp")
|
269
|
+
app_info[:instances] = 2
|
270
|
+
updated = @cf_client.update_app("newapp", app_info)
|
271
|
+
updated.should be_true
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should raise a BadParams exception when retrieving update status information with a blank name" do
|
275
|
+
expect {
|
276
|
+
update_info = @cf_client.update_app_info("")
|
277
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
278
|
+
end
|
279
|
+
|
280
|
+
it "should raise a NotFound exception when retrieving application update status information for an application that does not exists at target cloud" do
|
281
|
+
expect {
|
282
|
+
update_info = @cf_client.update_app_info("noapp")
|
283
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
284
|
+
end
|
285
|
+
|
286
|
+
it "should raise a BadParams exception when uploading application bits with a blank name" do
|
287
|
+
expect {
|
288
|
+
upload = @cf_client.upload_app("", nil)
|
289
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
290
|
+
end
|
291
|
+
|
292
|
+
it "should raise a BadParams exception when uploading application bits with a blank zipfile" do
|
293
|
+
expect {
|
294
|
+
upload = @cf_client.upload_app("newapp", nil)
|
295
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
296
|
+
end
|
297
|
+
|
298
|
+
it "should raise a BadParams exception when uploading application bits with an invalid zipfile" do
|
299
|
+
expect {
|
300
|
+
upload = @cf_client.upload_app("newapp", "fakefile")
|
301
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
302
|
+
end
|
303
|
+
|
304
|
+
it "should raise a NotFound exception when uploading application bits for an application that does not exists at target cloud" do
|
305
|
+
expect {
|
306
|
+
appfile = spec_fixture("app.zip")
|
307
|
+
upload = @cf_client.upload_app("noapp", appfile)
|
308
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
309
|
+
end
|
310
|
+
|
311
|
+
it "should raise a BadParams exception when downloading application bits with a blank name" do
|
312
|
+
expect {
|
313
|
+
appbits = @cf_client.download_app("")
|
314
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
315
|
+
end
|
316
|
+
|
317
|
+
it "should raise a NotFound exception when downloading application bits for an application that does not exists at target cloud" do
|
318
|
+
expect {
|
319
|
+
appbits = @cf_client.download_app("noapp")
|
320
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
321
|
+
end
|
322
|
+
|
323
|
+
it "should raise a NotFound exception when downloading application bits for an application without bits at target cloud" do
|
324
|
+
expect {
|
325
|
+
appbits = @cf_client.download_app("newapp")
|
326
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
327
|
+
end
|
328
|
+
|
329
|
+
it "should return true if application bits passed as filename are uploaded to the target cloud" do
|
330
|
+
VCR.use_cassette("user_logged/apps_upload_filename_action", :record => :new_episodes, :exclusive => true) do
|
331
|
+
filename = spec_fixture("app.zip")
|
332
|
+
upload = @cf_client.upload_app("newapp", filename)
|
333
|
+
upload.should be_true
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
it "should return true if application bits passed as file are uploaded to the target cloud" do
|
338
|
+
VCR.use_cassette("user_logged/apps_upload_zipfile_action", :record => :new_episodes, :exclusive => true) do
|
339
|
+
filename = spec_fixture("app.zip")
|
340
|
+
appfile = File.new(filename, "rb")
|
341
|
+
upload = @cf_client.upload_app("newapp", appfile)
|
342
|
+
upload.should be_true
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
it "should return true if an application is started at target cloud" do
|
347
|
+
VCR.use_cassette("user_logged/apps_start_action", :record => :new_episodes, :exclusive => true) do
|
348
|
+
app_info = @cf_client.app_info("newapp")
|
349
|
+
app_info[:state] = "STARTED"
|
350
|
+
updated = @cf_client.update_app("newapp", app_info)
|
351
|
+
updated.should be_true
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
355
|
+
it "should properly get application update status information from target cloud" do
|
356
|
+
VCR.use_cassette("user_logged/apps_update_info_action", :record => :new_episodes, :exclusive => true) do
|
357
|
+
update_info = @cf_client.update_app_info("newapp")
|
358
|
+
update_info.should have_key :state
|
359
|
+
update_info.should have_key :since
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
it "should properly get application bits from target cloud" do
|
364
|
+
VCR.use_cassette("user_logged/apps_download_action", :record => :new_episodes, :exclusive => true) do
|
365
|
+
appbits = @cf_client.download_app("newapp")
|
366
|
+
appbits.should_not be_empty
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
it "should properly get directory information for an application at target cloud" do
|
371
|
+
VCR.use_cassette("user_logged/apps_directory_action", :record => :new_episodes, :exclusive => true) do
|
372
|
+
app_files = @cf_client.app_files("newapp", "/app")
|
373
|
+
app_files.should include("app.js")
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
it "should properly get file information for an application at target cloud" do
|
378
|
+
VCR.use_cassette("user_logged/apps_file_action", :record => :new_episodes, :exclusive => true) do
|
379
|
+
app_file = @cf_client.app_files("newapp", "/app/app.js")
|
380
|
+
filebits = ""
|
381
|
+
filename = spec_fixture("app.js")
|
382
|
+
appfile = File.new(filename, "r")
|
383
|
+
while (line = appfile.gets)
|
384
|
+
filebits += line
|
385
|
+
end
|
386
|
+
appfile.close
|
387
|
+
app_file.should eql(filebits)
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
it "should raise an ServerError exception when retrieving files information for a file that does not exists at target cloud" do
|
392
|
+
expect {
|
393
|
+
app_files = @cf_client.app_files("newapp", "/app/nofile")
|
394
|
+
}.to raise_exception(CloudFoundry::Client::Exception::ServerError)
|
395
|
+
end
|
396
|
+
|
397
|
+
it "should properly get application stats information from target cloud" do
|
398
|
+
VCR.use_cassette("user_logged/apps_stats_action", :record => :new_episodes, :exclusive => true) do
|
399
|
+
app_stats = @cf_client.app_stats("newapp")
|
400
|
+
app_stats.should have_at_least(1).items
|
401
|
+
app_stats_info = app_stats.first
|
402
|
+
app_stats_info.should have_key :stats
|
403
|
+
end
|
404
|
+
end
|
405
|
+
|
406
|
+
it "should raise a BadParams exception when deleting an application with a blank name" do
|
407
|
+
expect {
|
408
|
+
deleted = @cf_client.delete_app("")
|
409
|
+
}.to raise_exception(CloudFoundry::Client::Exception::BadParams)
|
410
|
+
end
|
411
|
+
|
412
|
+
it "should raise a NotFound exception when deleting an application that does not exists at target cloud" do
|
413
|
+
expect {
|
414
|
+
deleted = @cf_client.delete_app("noapp")
|
415
|
+
}.to raise_exception(CloudFoundry::Client::Exception::NotFound)
|
416
|
+
end
|
417
|
+
|
418
|
+
it "should return true if an application is deleted at target cloud" do
|
419
|
+
deleted = @cf_client.delete_app("newapp")
|
420
|
+
deleted.should be_true
|
421
|
+
end
|
422
|
+
end
|
423
|
+
end
|