steamcannon-deltacloud-core 0.0.7.2-java → 0.0.8.1-java
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -9
- data/config.ru +2 -0
- data/lib/deltacloud/helpers/application_helper.rb +5 -2
- data/lib/sinatra/respond_to.rb +10 -0
- data/server.rb +3 -1
- data/views/images/show.html.haml +1 -1
- data/views/keys/show.xml.haml +2 -3
- metadata +46 -29
- data/tests/api_test.rb +0 -37
- data/tests/hardware_profiles_test.rb +0 -120
- data/tests/images_test.rb +0 -111
- data/tests/instance_states_test.rb +0 -51
- data/tests/instances_test.rb +0 -222
- data/tests/realms_test.rb +0 -78
- data/tests/url_for_test.rb +0 -50
data/Rakefile
CHANGED
@@ -30,15 +30,7 @@ end
|
|
30
30
|
|
31
31
|
desc "Run basic unit tests"
|
32
32
|
Rake::TestTask.new("test") { |t|
|
33
|
-
t.test_files = FileList
|
34
|
-
'tests/api_test.rb',
|
35
|
-
'tests/hardware_profiles_test.rb',
|
36
|
-
'tests/realms_test.rb',
|
37
|
-
'tests/images_test.rb',
|
38
|
-
'tests/instances_test.rb',
|
39
|
-
'tests/instance_states_test.rb',
|
40
|
-
'tests/url_for_test.rb'
|
41
|
-
]
|
33
|
+
t.test_files = FileList.new('tests/**/*_test.rb')
|
42
34
|
t.verbose = true
|
43
35
|
t.warning = false
|
44
36
|
}
|
data/config.ru
CHANGED
@@ -115,8 +115,11 @@ module ApplicationHelper
|
|
115
115
|
|
116
116
|
def cdata(&block)
|
117
117
|
text = capture_haml(&block)
|
118
|
-
text.
|
119
|
-
|
118
|
+
"<![CDATA[#{text.strip}]]>"
|
119
|
+
end
|
120
|
+
|
121
|
+
def render_cdata(text)
|
122
|
+
"<pem><![CDATA[#{text.strip}]]></pem>"
|
120
123
|
end
|
121
124
|
|
122
125
|
end
|
data/lib/sinatra/respond_to.rb
CHANGED
@@ -102,6 +102,8 @@ module Sinatra
|
|
102
102
|
|
103
103
|
if rack_accept.media_type.to_s.strip.eql?('Accept:')
|
104
104
|
format :xml
|
105
|
+
elsif is_chrome?
|
106
|
+
format :html
|
105
107
|
else
|
106
108
|
format lookup_format_from_mime(rack_accept.best_media_type(accept_to_array))
|
107
109
|
end
|
@@ -109,6 +111,14 @@ module Sinatra
|
|
109
111
|
end
|
110
112
|
|
111
113
|
app.class_eval do
|
114
|
+
|
115
|
+
# Simple helper to detect Chrome based browsers
|
116
|
+
# which have screwed up they Accept headers.
|
117
|
+
# Set HTML as default output format here
|
118
|
+
def is_chrome?
|
119
|
+
true if env['HTTP_USER_AGENT'] =~ /Chrome/
|
120
|
+
end
|
121
|
+
|
112
122
|
# This code was copied from respond_to plugin
|
113
123
|
# http://github.com/cehoffman/sinatra-respond_to
|
114
124
|
# MIT License
|
data/server.rb
CHANGED
@@ -14,6 +14,8 @@ require 'lib/deltacloud/helpers/blob_stream'
|
|
14
14
|
configure do
|
15
15
|
set :raise_errors => false
|
16
16
|
set :show_exceptions, false
|
17
|
+
set :views, File.dirname(__FILE__) + '/views'
|
18
|
+
set :public, File.dirname(__FILE__) + '/public'
|
17
19
|
end
|
18
20
|
|
19
21
|
configure :development do
|
@@ -421,7 +423,7 @@ collection :keys do
|
|
421
423
|
@key = driver.create_key(credentials, { :key_name => params[:name] })
|
422
424
|
respond_to do |format|
|
423
425
|
format.html { haml :"keys/show" }
|
424
|
-
format.xml { haml :"keys/show" }
|
426
|
+
format.xml { haml :"keys/show", :ugly => true }
|
425
427
|
end
|
426
428
|
end
|
427
429
|
end
|
data/views/images/show.html.haml
CHANGED
data/views/keys/show.xml.haml
CHANGED
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.0.
|
8
|
+
- 8
|
9
|
+
- 1
|
10
|
+
version: 0.0.8.1
|
11
11
|
platform: java
|
12
12
|
authors:
|
13
13
|
- Red Hat, Inc.
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-21 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -109,9 +109,39 @@ dependencies:
|
|
109
109
|
type: :runtime
|
110
110
|
version_requirements: *id006
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: aws
|
113
113
|
prerelease: false
|
114
114
|
requirement: &id007 !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
segments:
|
120
|
+
- 2
|
121
|
+
- 3
|
122
|
+
- 21
|
123
|
+
version: 2.3.21
|
124
|
+
type: :runtime
|
125
|
+
version_requirements: *id007
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: amazon-ec2
|
128
|
+
prerelease: false
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
- 9
|
137
|
+
- 15
|
138
|
+
version: 0.9.15
|
139
|
+
type: :runtime
|
140
|
+
version_requirements: *id008
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: compass
|
143
|
+
prerelease: false
|
144
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
115
145
|
none: false
|
116
146
|
requirements:
|
117
147
|
- - ">="
|
@@ -122,11 +152,11 @@ dependencies:
|
|
122
152
|
- 17
|
123
153
|
version: 0.8.17
|
124
154
|
type: :development
|
125
|
-
version_requirements: *
|
155
|
+
version_requirements: *id009
|
126
156
|
- !ruby/object:Gem::Dependency
|
127
157
|
name: nokogiri
|
128
158
|
prerelease: false
|
129
|
-
requirement: &
|
159
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
130
160
|
none: false
|
131
161
|
requirements:
|
132
162
|
- - ">="
|
@@ -137,11 +167,11 @@ dependencies:
|
|
137
167
|
- 1
|
138
168
|
version: 1.4.1
|
139
169
|
type: :development
|
140
|
-
version_requirements: *
|
170
|
+
version_requirements: *id010
|
141
171
|
- !ruby/object:Gem::Dependency
|
142
172
|
name: rack-test
|
143
173
|
prerelease: false
|
144
|
-
requirement: &
|
174
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
145
175
|
none: false
|
146
176
|
requirements:
|
147
177
|
- - ">="
|
@@ -152,11 +182,11 @@ dependencies:
|
|
152
182
|
- 3
|
153
183
|
version: 0.5.3
|
154
184
|
type: :development
|
155
|
-
version_requirements: *
|
185
|
+
version_requirements: *id011
|
156
186
|
- !ruby/object:Gem::Dependency
|
157
187
|
name: cucumber
|
158
188
|
prerelease: false
|
159
|
-
requirement: &
|
189
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
160
190
|
none: false
|
161
191
|
requirements:
|
162
192
|
- - ">="
|
@@ -167,11 +197,11 @@ dependencies:
|
|
167
197
|
- 3
|
168
198
|
version: 0.6.3
|
169
199
|
type: :development
|
170
|
-
version_requirements: *
|
200
|
+
version_requirements: *id012
|
171
201
|
- !ruby/object:Gem::Dependency
|
172
202
|
name: rcov
|
173
203
|
prerelease: false
|
174
|
-
requirement: &
|
204
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
175
205
|
none: false
|
176
206
|
requirements:
|
177
207
|
- - ">="
|
@@ -182,7 +212,7 @@ dependencies:
|
|
182
212
|
- 8
|
183
213
|
version: 0.9.8
|
184
214
|
type: :development
|
185
|
-
version_requirements: *
|
215
|
+
version_requirements: *id013
|
186
216
|
description: " The Deltacloud API is built as a service-based REST API.\n You do not directly link a Deltacloud library into your program to use it.\n Instead, a client speaks the Deltacloud API over HTTP to a server\n which implements the REST interface.\n"
|
187
217
|
email: deltacloud-users@lists.fedorahosted.org
|
188
218
|
executables:
|
@@ -335,13 +365,6 @@ files:
|
|
335
365
|
- public/stylesheets/compiled/application.css
|
336
366
|
- public/stylesheets/compiled/screen.css
|
337
367
|
- bin/deltacloudd
|
338
|
-
- tests/images_test.rb
|
339
|
-
- tests/instances_test.rb
|
340
|
-
- tests/url_for_test.rb
|
341
|
-
- tests/hardware_profiles_test.rb
|
342
|
-
- tests/instance_states_test.rb
|
343
|
-
- tests/realms_test.rb
|
344
|
-
- tests/api_test.rb
|
345
368
|
- COPYING
|
346
369
|
has_rdoc: true
|
347
370
|
homepage: http://www.deltacloud.org
|
@@ -377,11 +400,5 @@ rubygems_version: 1.3.7
|
|
377
400
|
signing_key:
|
378
401
|
specification_version: 3
|
379
402
|
summary: Deltacloud REST API
|
380
|
-
test_files:
|
381
|
-
|
382
|
-
- tests/instances_test.rb
|
383
|
-
- tests/url_for_test.rb
|
384
|
-
- tests/hardware_profiles_test.rb
|
385
|
-
- tests/instance_states_test.rb
|
386
|
-
- tests/realms_test.rb
|
387
|
-
- tests/api_test.rb
|
403
|
+
test_files: []
|
404
|
+
|
data/tests/api_test.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class ApiTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_returns_entry_points
|
12
|
-
do_xml_request '/api'
|
13
|
-
(last_xml_response/'/api/link').map.size.should > 0
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_it_has_correct_attributes_set
|
17
|
-
do_xml_request '/api'
|
18
|
-
(last_xml_response/'/api/link').each do |link|
|
19
|
-
link.attributes.keys.sort.should == [ 'href', 'rel' ]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_it_responses_to_html
|
24
|
-
do_request '/api', {}, false, { :format => :html }
|
25
|
-
last_response.status.should == 200
|
26
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_it_responses_to_json
|
30
|
-
do_request '/api', {}, false, { :format => :json }
|
31
|
-
last_response.status.should == 200
|
32
|
-
JSON::parse(last_response.body).class.should == Hash
|
33
|
-
JSON::parse(last_response.body)['api'].class.should == Hash
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class HardwareProfilesTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_returns_hardware_profiles
|
12
|
-
do_xml_request '/api/hardware_profiles'
|
13
|
-
(last_xml_response/'hardware_profiles/hardware_profile').map.size.should > 0
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_it_has_correct_attributes_set
|
17
|
-
do_xml_request '/api/hardware_profiles'
|
18
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
19
|
-
profile.attributes.keys.sort.should == [ 'href', 'id' ]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_hardware_profiles_have_name
|
24
|
-
do_xml_request '/api/hardware_profiles'
|
25
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
26
|
-
(profile/'name').text.should_not == nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_hardware_profiles_have_unique_name
|
31
|
-
do_xml_request '/api/hardware_profiles'
|
32
|
-
names = []
|
33
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
34
|
-
names << (profile/'name').text
|
35
|
-
end
|
36
|
-
names.should == names.uniq
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_hardware_profiles_have_unique_id
|
40
|
-
do_xml_request '/api/hardware_profiles'
|
41
|
-
ids = []
|
42
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
43
|
-
ids << profile['id']
|
44
|
-
end
|
45
|
-
ids.should == ids.uniq
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_m1_xlarge_profile_has_correct_attributes
|
49
|
-
do_xml_request '/api/hardware_profiles'
|
50
|
-
profile = (last_xml_response/'hardware_profiles/hardware_profile[@id="m1-xlarge"]')
|
51
|
-
test_profile_properties(profile)
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_it_returns_valid_hardware_profile
|
55
|
-
do_xml_request '/api/hardware_profiles/m1-xlarge'
|
56
|
-
profile = (last_xml_response/'hardware_profile')
|
57
|
-
test_profile_properties(profile)
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_it_responses_to_json
|
61
|
-
do_request '/api/hardware_profiles', {}, false, { :format => :json }
|
62
|
-
JSON::parse(last_response.body).class.should == Hash
|
63
|
-
JSON::parse(last_response.body)['hardware_profiles'].class.should == Array
|
64
|
-
|
65
|
-
do_request '/api/hardware_profiles/m1-xlarge', {}, false, { :format => :json }
|
66
|
-
last_response.status.should == 200
|
67
|
-
JSON::parse(last_response.body).class.should == Hash
|
68
|
-
JSON::parse(last_response.body)['hardware_profile'].class.should == Hash
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_it_responses_to_html
|
72
|
-
do_request '/api/hardware_profiles', {}, false, { :format => :html }
|
73
|
-
last_response.status.should == 200
|
74
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
75
|
-
|
76
|
-
do_request '/api/hardware_profiles/m1-xlarge', {}, false, { :format => :html }
|
77
|
-
last_response.status.should == 200
|
78
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_it_returns_error_on_wrong_name
|
82
|
-
do_request '/api/hardware_profiles/m1-unknown-wrongname', {}, false, { :format => :html }
|
83
|
-
last_response.status.should == 404
|
84
|
-
do_xml_request '/api/hardware_profiles/m1-unknown-wrongname'
|
85
|
-
last_response.status.should == 404
|
86
|
-
do_request '/api/hardware_profiles/m1-unknown-wrongname', {}, false, { :format => :json }
|
87
|
-
last_response.status.should == 404
|
88
|
-
end
|
89
|
-
|
90
|
-
private
|
91
|
-
|
92
|
-
def test_profile_properties(profile)
|
93
|
-
|
94
|
-
(profile/'property').each do |properties|
|
95
|
-
properties.attributes.keys.sort.should == [ 'kind', 'name', 'unit', 'value' ]
|
96
|
-
end
|
97
|
-
|
98
|
-
(profile/'property[@name="architecture"]').first['kind'].should == 'fixed'
|
99
|
-
(profile/'property[@name="architecture"]').first['unit'].should == 'label'
|
100
|
-
|
101
|
-
(profile/'property[@name="memory"]').first['kind'].should == 'range'
|
102
|
-
(profile/'property[@name="memory"]').first['unit'].should == 'MB'
|
103
|
-
(profile/'property[@name="memory"]/range').size.should == 1
|
104
|
-
(profile/'property[@name="memory"]/range').first.attributes.keys.sort.should == [ 'first', 'last' ]
|
105
|
-
|
106
|
-
(profile/'property[@name="cpu"]').first['kind'].should == 'fixed'
|
107
|
-
(profile/'property[@name="cpu"]').first['unit'].should == 'count'
|
108
|
-
|
109
|
-
(profile/'property[@name="storage"]').first['kind'].should == 'enum'
|
110
|
-
(profile/'property[@name="storage"]').first['unit'].should == 'GB'
|
111
|
-
(profile/'property[@name="storage"]/enum').size.should == 1
|
112
|
-
(profile/'property[@name="storage"]/enum/entry').map.size.should == 3
|
113
|
-
(profile/'property[@name="storage"]/enum/entry').each do |entry|
|
114
|
-
entry.attributes.keys.should == [ 'value' ]
|
115
|
-
entry['value'].should_not == nil
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
end
|
data/tests/images_test.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class HardwareProfilesTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_require_authentication
|
12
|
-
require_authentication?('/api/images').should == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_images
|
16
|
-
do_xml_request '/api/images', {}, true
|
17
|
-
(last_xml_response/'images/image').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_it_has_correct_attributes_set
|
21
|
-
do_xml_request '/api/images', {}, true
|
22
|
-
(last_xml_response/'images/image').each do |image|
|
23
|
-
image.attributes.keys.sort.should == [ 'href', 'id' ]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_img1_has_correct_attributes
|
28
|
-
do_xml_request '/api/images', {}, true
|
29
|
-
image = (last_xml_response/'images/image[@id="img1"]')
|
30
|
-
test_image_attributes(image)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_it_returns_valid_image
|
34
|
-
do_xml_request '/api/images/img1', {}, true
|
35
|
-
image = (last_xml_response/'image')
|
36
|
-
test_image_attributes(image)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_it_has_unique_ids
|
40
|
-
do_xml_request '/api/images', {}, true
|
41
|
-
ids = []
|
42
|
-
(last_xml_response/'images/image').each do |image|
|
43
|
-
ids << image['id'].to_s
|
44
|
-
end
|
45
|
-
ids.sort.should == ids.sort.uniq
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_it_has_valid_urls
|
49
|
-
do_xml_request '/api/images', {}, true
|
50
|
-
ids = []
|
51
|
-
images = (last_xml_response/'images/image')
|
52
|
-
images.each do |image|
|
53
|
-
do_xml_request image['href'].to_s, {}, true
|
54
|
-
(last_xml_response/'image').first['href'].should == image['href'].to_s
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_it_can_filter_using_owner_id
|
59
|
-
do_xml_request '/api/images', { :owner_id => 'mockuser' }, true
|
60
|
-
(last_xml_response/'images/image').size.should == 1
|
61
|
-
(last_xml_response/'images/image/owner_id').first.text.should == 'mockuser'
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_it_can_filter_using_unknown_owner_id
|
65
|
-
do_xml_request '/api/images', { :architecture => 'unknown_user' }, true
|
66
|
-
(last_xml_response/'images/image').size.should == 0
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_it_can_filter_using_architecture
|
70
|
-
do_xml_request '/api/images', { :architecture => 'x86_64' }, true
|
71
|
-
(last_xml_response/'images/image').size.should == 1
|
72
|
-
(last_xml_response/'images/image/architecture').first.text.should == 'x86_64'
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_it_can_filter_using_unknown_architecture
|
76
|
-
do_xml_request '/api/images', { :architecture => 'unknown_arch' }, true
|
77
|
-
(last_xml_response/'images/image').size.should == 0
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_it_responses_to_json
|
81
|
-
do_request '/api/images', {}, true, { :format => :json }
|
82
|
-
JSON::parse(last_response.body).class.should == Hash
|
83
|
-
JSON::parse(last_response.body)['images'].class.should == Array
|
84
|
-
|
85
|
-
do_request '/api/images/img1', {}, true, { :format => :json }
|
86
|
-
last_response.status.should == 200
|
87
|
-
JSON::parse(last_response.body).class.should == Hash
|
88
|
-
JSON::parse(last_response.body)['image'].class.should == Hash
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_it_responses_to_html
|
92
|
-
do_request '/api/images', {}, true, { :format => :html }
|
93
|
-
last_response.status.should == 200
|
94
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
95
|
-
|
96
|
-
do_request '/api/images/img1', {}, true, { :format => :html }
|
97
|
-
last_response.status.should == 200
|
98
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
99
|
-
end
|
100
|
-
|
101
|
-
private
|
102
|
-
|
103
|
-
def test_image_attributes(image)
|
104
|
-
(image/'name').text.should_not nil
|
105
|
-
(image/'owner_id').text.should_not nil
|
106
|
-
(image/'description').text.should_not nil
|
107
|
-
(image/'architecture').text.should_not nil
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
111
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class RealmsTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_not_require_authentication
|
12
|
-
require_authentication?('/api/realms').should_not == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_instance_states
|
16
|
-
do_xml_request '/api/instance_states', {}, true
|
17
|
-
(last_xml_response/'states/state').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_each_state_has_transition
|
21
|
-
do_xml_request '/api/instance_states', {}, true
|
22
|
-
(last_xml_response/'states/state').each do |state|
|
23
|
-
next if state['name'].eql?('finish') # Finnish state doesn't have transitions
|
24
|
-
(state/'transition').map.size.should > 0
|
25
|
-
(state/'transition').each do |transition|
|
26
|
-
transition['to'].should_not == nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_it_responses_to_json
|
32
|
-
do_request '/api/instance_states', {}, false, { :format => :json }
|
33
|
-
JSON::parse(last_response.body).class.should == Array
|
34
|
-
JSON::parse(last_response.body).first['transitions'].class.should == Array
|
35
|
-
JSON::parse(last_response.body).first['name'].should == 'start'
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_it_responses_to_html
|
39
|
-
do_request '/api/instance_states', {}, false, { :format => :html }
|
40
|
-
last_response.status.should == 200
|
41
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_it_responses_to_png
|
45
|
-
do_request '/api/instance_states', { :format => 'png' }, false
|
46
|
-
last_response.status.should == 200
|
47
|
-
last_response.headers['Content-Type'].should == 'image/png'
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
data/tests/instances_test.rb
DELETED
@@ -1,222 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class InstancesTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_require_authentication
|
12
|
-
require_authentication?('/api/instances').should == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_instances
|
16
|
-
do_xml_request '/api/instances', {}, true
|
17
|
-
(last_xml_response/'instances/instance').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_it_has_correct_attributes_set
|
21
|
-
do_xml_request '/api/images', {}, true
|
22
|
-
(last_xml_response/'images/image').each do |image|
|
23
|
-
image.attributes.keys.sort.should == [ 'href', 'id' ]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_it_has_unique_ids
|
28
|
-
do_xml_request '/api/instances', {}, true
|
29
|
-
ids = []
|
30
|
-
(last_xml_response/'instances/instance').each do |image|
|
31
|
-
ids << image['id'].to_s
|
32
|
-
end
|
33
|
-
ids.sort.should == ids.sort.uniq
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_inst1_has_correct_attributes
|
37
|
-
do_xml_request '/api/instances', {}, true
|
38
|
-
instance = (last_xml_response/'instances/instance[@id="inst1"]')
|
39
|
-
test_instance_attributes(instance)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_it_returns_valid_realm
|
43
|
-
do_xml_request '/api/instances/inst1', {}, true
|
44
|
-
instance = (last_xml_response/'instance')
|
45
|
-
test_instance_attributes(instance)
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_it_responses_to_json
|
49
|
-
do_request '/api/instances', {}, true, { :format => :json }
|
50
|
-
JSON::parse(last_response.body).class.should == Hash
|
51
|
-
JSON::parse(last_response.body)['instances'].class.should == Array
|
52
|
-
|
53
|
-
do_request '/api/instances/inst1', {}, true, { :format => :json }
|
54
|
-
last_response.status.should == 200
|
55
|
-
JSON::parse(last_response.body).class.should == Hash
|
56
|
-
JSON::parse(last_response.body)['instance'].class.should == Hash
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_it_responses_to_html
|
60
|
-
do_request '/api/instances', {}, true, { :format => :html }
|
61
|
-
last_response.status.should == 200
|
62
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
63
|
-
|
64
|
-
do_request '/api/instances/inst1', {}, true, { :format => :html }
|
65
|
-
last_response.status.should == 200
|
66
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_it_create_a_new_instance_using_image_id
|
70
|
-
params = {
|
71
|
-
:image_id => 'img1'
|
72
|
-
}
|
73
|
-
header 'Accept', accept_header(:xml)
|
74
|
-
post '/api/instances', params, authenticate
|
75
|
-
last_response.status.should == 201
|
76
|
-
last_response.headers['Location'].should_not == nil
|
77
|
-
do_xml_request last_response.headers['Location'], {}, true
|
78
|
-
(last_xml_response/'instance/name').should_not == nil
|
79
|
-
add_created_instance (last_xml_response/'instance').first['id']
|
80
|
-
test_instance_attributes(last_xml_response/'instance')
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_it_create_a_new_instance_using_image_id_and_name
|
84
|
-
params = {
|
85
|
-
:image_id => 'img1',
|
86
|
-
:name => "unit_test_instance1"
|
87
|
-
}
|
88
|
-
header 'Accept', accept_header(:xml)
|
89
|
-
post '/api/instances', params, authenticate(:format => :xml)
|
90
|
-
last_response.status.should == 201
|
91
|
-
last_response.headers['Location'].should_not == nil
|
92
|
-
do_xml_request last_response.headers['Location'], {}, true
|
93
|
-
(last_xml_response/'instance/name').text.should == 'unit_test_instance1'
|
94
|
-
add_created_instance (last_xml_response/'instance').first['id']
|
95
|
-
test_instance_attributes(last_xml_response/'instance')
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_it_create_a_new_instance_using_image_id_and_name_and_hwp
|
99
|
-
params = {
|
100
|
-
:image_id => 'img1',
|
101
|
-
:name => "unit_test_instance1",
|
102
|
-
:hwp_id => "m1-xlarge"
|
103
|
-
}
|
104
|
-
header 'Accept', accept_header(:xml)
|
105
|
-
post '/api/instances', params, authenticate(:format => :xml)
|
106
|
-
last_response.status.should == 201
|
107
|
-
last_response.headers['Location'].should_not == nil
|
108
|
-
do_xml_request last_response.headers['Location'], {}, true
|
109
|
-
(last_xml_response/'instance/name').text.should == 'unit_test_instance1'
|
110
|
-
(last_xml_response/'instance/hardware_profile').first['id'].should == 'm1-xlarge'
|
111
|
-
add_created_instance (last_xml_response/'instance').first['id']
|
112
|
-
test_instance_attributes(last_xml_response/'instance')
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_it_z0_stop_and_start_instance
|
116
|
-
$created_instances.each do |instance_id|
|
117
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
118
|
-
stop_url = (last_xml_response/'actions/link[@rel="stop"]').first['href']
|
119
|
-
stop_url.should_not == nil
|
120
|
-
post create_url(stop_url), { :format => 'xml' }, authenticate
|
121
|
-
last_response.status.should == 200
|
122
|
-
instance = Nokogiri::XML(last_response.body)
|
123
|
-
test_instance_attributes(instance)
|
124
|
-
(instance/'state').text.should == 'STOPPED'
|
125
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
126
|
-
start_url = (last_xml_response/'actions/link[@rel="start"]').first['href']
|
127
|
-
start_url.should_not == nil
|
128
|
-
post create_url(start_url), { :format => 'xml'}, authenticate
|
129
|
-
last_response.status.should == 200
|
130
|
-
instance = Nokogiri::XML(last_response.body)
|
131
|
-
test_instance_attributes(instance)
|
132
|
-
(instance/'state').text.should == 'RUNNING'
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_z0_reboot_instance
|
137
|
-
$created_instances.each do |instance_id|
|
138
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
139
|
-
reboot_url = (last_xml_response/'actions/link[@rel="reboot"]').first['href']
|
140
|
-
reboot_url.should_not == nil
|
141
|
-
post create_url(reboot_url), { :format => "xml"}, authenticate
|
142
|
-
last_response.status.should == 200
|
143
|
-
instance = Nokogiri::XML(last_response.body)
|
144
|
-
test_instance_attributes(instance)
|
145
|
-
(instance/'state').text.should == 'RUNNING'
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def test_z1_stop_created_instances
|
150
|
-
$created_instances.each do |instance_id|
|
151
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
152
|
-
stop_url = (last_xml_response/'actions/link[@rel="stop"]').first['href']
|
153
|
-
stop_url.should_not == nil
|
154
|
-
post create_url(stop_url), {}, authenticate
|
155
|
-
last_response.status.should == 200
|
156
|
-
instance = Nokogiri::XML(last_response.body)
|
157
|
-
test_instance_attributes(instance)
|
158
|
-
(instance/'state').text.should == 'STOPPED'
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_z2_destroy_created_instances
|
163
|
-
$created_instances.each do |instance_id|
|
164
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
165
|
-
destroy_url = (last_xml_response/'actions/link[@rel="destroy"]').first['href']
|
166
|
-
destroy_url.should_not == nil
|
167
|
-
delete create_url(destroy_url), {}, authenticate
|
168
|
-
last_response.status.should == 302
|
169
|
-
do_xml_request last_response.headers['Location'], {}, true
|
170
|
-
(last_xml_response/'instances').should_not == nil
|
171
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
172
|
-
last_response.status.should == 404
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
private
|
177
|
-
|
178
|
-
def test_instance_attributes(instance)
|
179
|
-
(instance/'name').should_not == nil
|
180
|
-
(instance/'owner_id').should_not == nil
|
181
|
-
['RUNNING', 'STOPPED'].include?((instance/'state').text).should == true
|
182
|
-
|
183
|
-
(instance/'public_addreses').should_not == nil
|
184
|
-
(instance/'public_addresses/address').map.size.should > 0
|
185
|
-
(instance/'public_addresses/address').first.text.should_not == ""
|
186
|
-
|
187
|
-
(instance/'private_addresses').should_not == nil
|
188
|
-
(instance/'private_addresses/address').map.size.should > 0
|
189
|
-
(instance/'private_addresses/address').first.text.should_not == ""
|
190
|
-
|
191
|
-
(instance/'actions/link').map.size.should > 0
|
192
|
-
(instance/'actions/link').each do |link|
|
193
|
-
link['href'].should_not == ""
|
194
|
-
link['rel'].should_not == ""
|
195
|
-
link['method'].should_not == ""
|
196
|
-
['get', 'post', 'delete', 'put'].include?(link['method']).should == true
|
197
|
-
end
|
198
|
-
|
199
|
-
(instance/'image').size.should > 0
|
200
|
-
(instance/'image').first['href'].should_not == ""
|
201
|
-
(instance/'image').first['id'].should_not == ""
|
202
|
-
do_xml_request (instance/'image').first['href'], {}, true
|
203
|
-
(last_xml_response/'image').should_not == nil
|
204
|
-
(last_xml_response/'image').first['href'] == (instance/'image').first['href']
|
205
|
-
|
206
|
-
(instance/'realm').size.should > 0
|
207
|
-
(instance/'realm').first['href'].should_not == ""
|
208
|
-
(instance/'realm').first['id'].should_not == ""
|
209
|
-
do_xml_request (instance/'realm').first['href']
|
210
|
-
(last_xml_response/'realm').should_not == nil
|
211
|
-
(last_xml_response/'realm').first['href'] == (instance/'realm').first['href']
|
212
|
-
|
213
|
-
(instance/'hardware_profile').size.should > 0
|
214
|
-
(instance/'hardware_profile').first['href'].should_not == ""
|
215
|
-
(instance/'hardware_profile').first['id'].should_not == ""
|
216
|
-
do_xml_request (instance/'hardware_profile').first['href']
|
217
|
-
(last_xml_response/'hardware_profile').should_not == nil
|
218
|
-
(last_xml_response/'hardware_profile').first['href'] == (instance/'hardware_profile').first['href']
|
219
|
-
end
|
220
|
-
|
221
|
-
end
|
222
|
-
end
|
data/tests/realms_test.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class RealmsTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_not_require_authentication
|
12
|
-
require_authentication?('/api/realms').should_not == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_realms
|
16
|
-
do_xml_request '/api/realms', {}, true
|
17
|
-
(last_xml_response/'realms/realm').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_it_has_correct_attributes_set
|
21
|
-
do_xml_request '/api/realms', {}, true
|
22
|
-
(last_xml_response/'realms/realm').each do |realm|
|
23
|
-
realm.attributes.keys.sort.should == [ 'href', 'id' ]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_us_has_correct_attributes
|
28
|
-
do_xml_request '/api/realms', {}, true
|
29
|
-
realm = (last_xml_response/'realms/realm[@id="us"]')
|
30
|
-
test_realm_attributes(realm)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_it_returns_valid_realm
|
34
|
-
do_xml_request '/api/realms/us', {}, true
|
35
|
-
realm = (last_xml_response/'realm')
|
36
|
-
test_realm_attributes(realm)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_it_has_unique_ids
|
40
|
-
do_xml_request '/api/realms', {}, true
|
41
|
-
ids = []
|
42
|
-
(last_xml_response/'realms/realm').each do |realm|
|
43
|
-
ids << realm['id'].to_s
|
44
|
-
end
|
45
|
-
ids.sort.should == ids.sort.uniq
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_it_responses_to_json
|
49
|
-
do_request '/api/realms', {}, false, { :format => :json }
|
50
|
-
JSON::parse(last_response.body).class.should == Hash
|
51
|
-
JSON::parse(last_response.body)['realms'].class.should == Array
|
52
|
-
|
53
|
-
do_request '/api/realms/us', {}, false, { :format => :json }
|
54
|
-
last_response.status.should == 200
|
55
|
-
JSON::parse(last_response.body).class.should == Hash
|
56
|
-
JSON::parse(last_response.body)['realm'].class.should == Hash
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_it_responses_to_html
|
60
|
-
do_request '/api/realms', {}, false, { :format => :html }
|
61
|
-
last_response.status.should == 200
|
62
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
63
|
-
|
64
|
-
do_request '/api/realms/us', {}, false, { :format => :html }
|
65
|
-
last_response.status.should == 200
|
66
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
def test_realm_attributes(realm)
|
72
|
-
(realm/'name').should_not == nil
|
73
|
-
(realm/'limit').should_not == nil
|
74
|
-
['AVAILABLE'].include?((realm/'state').text).should == true
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
end
|
data/tests/url_for_test.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class UrlForTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_works_for_root
|
12
|
-
verify_url_for("/", "/")
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_works_for_root_absolute
|
16
|
-
verify_url_for("/", "http://localhost/", :full)
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_it_works_with_spaces
|
20
|
-
verify_url_for("/url with spaces", "/url%20with%20spaces")
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_it_works_when_given_absolute
|
24
|
-
verify_url_for("http://test.com", "http://test.com")
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_it_works_when_not_at_root_context
|
28
|
-
verify_url_for("/", "context/", :path_only, {}, {"SCRIPT_NAME" => "context"})
|
29
|
-
end
|
30
|
-
|
31
|
-
def verify_url_for(url, expected_url, mode=:path_only, params={}, rack_env={})
|
32
|
-
# generate a unique url for each test
|
33
|
-
test_url = "/url_for_test/#{expected_url.hash}/#{Time.now.to_i}"
|
34
|
-
# Create our sinatra test endpoint
|
35
|
-
self.class.create_test_url_content(test_url, url, mode)
|
36
|
-
|
37
|
-
# verify the generated url matches what we expect
|
38
|
-
get test_url, params, rack_env
|
39
|
-
last_response.body.should == expected_url
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.create_test_url_content(test_url, url_content, mode)
|
43
|
-
get test_url do
|
44
|
-
content_type "text/plain"
|
45
|
-
url_for(url_content, mode)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|