studio_api 3.1.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/Gemfile +8 -0
- data/Rakefile +3 -43
- data/VERSION +1 -1
- data/lib/studio_api/generic_request.rb +4 -4
- data/lib/studio_api/running_build.rb +19 -0
- data/rubygem-studio_api.changes +98 -0
- data/rubygem-studio_api.spec.template +89 -0
- data/test/appliance_test.rb +198 -204
- data/test/build_test.rb +25 -28
- data/test/connection_test.rb +10 -10
- data/test/file_test.rb +28 -31
- data/test/gallery_test.rb +16 -26
- data/test/generic_request_test.rb +28 -32
- data/test/repository_test.rb +23 -27
- data/test/resource_test.rb +1 -9
- data/test/responses/api_version.xml +1 -0
- data/test/responses/running_build_image_already_exists.xml +4 -0
- data/test/responses/software_fake_response.xml +9 -0
- data/test/rpm_test.rb +30 -36
- data/test/running_build_test.rb +38 -30
- data/test/template_set_test.rb +9 -20
- data/test/test_helper.rb +25 -0
- data/test/testdrive_test.rb +12 -25
- metadata +49 -21
data/test/running_build_test.rb
CHANGED
@@ -1,50 +1,58 @@
|
|
1
|
-
require '
|
2
|
-
require 'active_support'
|
3
|
-
require 'active_resource/http_mock'
|
4
|
-
require 'mocha'
|
5
|
-
require 'test/unit'
|
6
|
-
$:.unshift File.join( File.dirname(__FILE__), '..', 'lib')
|
7
|
-
require 'studio_api/running_build'
|
8
|
-
require 'studio_api/connection'
|
1
|
+
require 'test_helper'
|
9
2
|
|
10
3
|
class RunningBuildTest < Test::Unit::TestCase
|
11
|
-
BUILD_ID = 529783
|
12
|
-
APPLIANCE_ID = 269186
|
13
|
-
|
14
|
-
def respond_load name
|
15
|
-
IO.read(File.join(File.dirname(__FILE__), "responses", name))
|
16
|
-
end
|
17
4
|
|
18
5
|
def setup
|
19
|
-
@
|
20
|
-
|
6
|
+
@build_id = 529783
|
7
|
+
@appliance_id = 269186
|
21
8
|
|
22
|
-
|
23
|
-
|
9
|
+
FakeWeb.clean_registry
|
10
|
+
FakeWeb.allow_net_connect = false
|
11
|
+
@connection = StudioApi::Connection.new(@@username, @@password,"http://localhost/api/")
|
12
|
+
StudioApi::RunningBuild.studio_connection = @connection
|
13
|
+
end
|
24
14
|
|
25
|
-
|
26
|
-
|
27
|
-
mock.get "/running_builds/#{BUILD_ID}", {"Authorization"=>"Basic dGVzdDp0ZXN0"}, running_build_out, 200
|
28
|
-
mock.delete "/running_builds/#{BUILD_ID}", {"Authorization"=>"Basic dGVzdDp0ZXN0"}, running_build_out, 200
|
29
|
-
mock.post "/running_builds?appliance_id=#{APPLIANCE_ID}&force=true", {"Authorization"=>"Basic dGVzdDp0ZXN0"}, running_build_out, 200
|
30
|
-
end
|
15
|
+
def teardown
|
16
|
+
FakeWeb.allow_net_connect = false
|
31
17
|
end
|
32
18
|
|
33
19
|
def test_find
|
34
|
-
|
20
|
+
register_fake_response_from_file :get, "/api/running_builds?appliance_id=#{@appliance_id}",
|
21
|
+
'running_builds.xml'
|
22
|
+
res = StudioApi::RunningBuild.find :all, :params => {:appliance_id => @appliance_id}
|
35
23
|
assert_equal 3, res.size
|
36
|
-
|
37
|
-
|
24
|
+
|
25
|
+
register_fake_response_from_file :get, "/api/running_builds/#{@build_id}",
|
26
|
+
'running_build.xml'
|
27
|
+
res = StudioApi::RunningBuild.find @build_id
|
28
|
+
assert_equal @build_id, res.id.to_i
|
38
29
|
end
|
39
30
|
|
40
31
|
def test_cancel
|
41
|
-
|
32
|
+
register_fake_response_from_file :get, "/api/running_builds/#{@build_id}",
|
33
|
+
'running_build.xml'
|
34
|
+
running_build = StudioApi::RunningBuild.find @build_id
|
35
|
+
|
36
|
+
register_fake_response_from_file :delete, "/api/running_builds/#{@build_id}",
|
37
|
+
'running_build.xml'
|
42
38
|
assert running_build.destroy
|
43
|
-
assert StudioApi::RunningBuild.delete
|
39
|
+
assert StudioApi::RunningBuild.delete @build_id
|
44
40
|
assert running_build.cancel #test alias
|
45
41
|
end
|
46
42
|
|
47
43
|
def test_run_new
|
48
|
-
|
44
|
+
register_fake_response_from_file :post, "/api/running_builds?appliance_id=#{@appliance_id}&force=true",
|
45
|
+
'running_build.xml'
|
46
|
+
assert StudioApi::RunningBuild.new(:appliance_id => @appliance_id, :force => true).save
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_find_image_already_exists_error
|
50
|
+
register_fake_response_from_file :post, "/api/running_builds?appliance_id=#{@appliance_id}",
|
51
|
+
'running_build_image_already_exists.xml',
|
52
|
+
["400", "Bad Request"]
|
53
|
+
|
54
|
+
assert_raises StudioApi::ImageAlreadyExists do
|
55
|
+
StudioApi::RunningBuild.new(:appliance_id => @appliance_id).save
|
56
|
+
end
|
49
57
|
end
|
50
58
|
end
|
data/test/template_set_test.rb
CHANGED
@@ -1,32 +1,21 @@
|
|
1
|
-
require '
|
2
|
-
require 'active_support'
|
3
|
-
require 'active_resource/http_mock'
|
4
|
-
require 'mocha'
|
5
|
-
require 'test/unit'
|
6
|
-
require 'tempfile'
|
7
|
-
$:.unshift File.join( File.dirname(__FILE__), '..', 'lib')
|
8
|
-
require 'studio_api/template_set'
|
9
|
-
require 'studio_api/connection'
|
10
|
-
require 'studio_api/generic_request'
|
1
|
+
require 'test_helper'
|
11
2
|
|
12
3
|
class TemplateSetTest < Test::Unit::TestCase
|
13
4
|
|
14
|
-
def respond_load name
|
15
|
-
IO.read(File.join(File.dirname(__FILE__), "responses", name))
|
16
|
-
end
|
17
|
-
|
18
5
|
def setup
|
19
|
-
|
6
|
+
FakeWeb.clean_registry
|
7
|
+
FakeWeb.allow_net_connect = false
|
8
|
+
@connection = StudioApi::Connection.new(@@username, @@password,"http://localhost/api/")
|
20
9
|
StudioApi::TemplateSet.studio_connection = @connection
|
10
|
+
end
|
21
11
|
|
22
|
-
|
23
|
-
|
24
|
-
ActiveResource::HttpMock.respond_to do |mock|
|
25
|
-
mock.get "/template_sets", {"Authorization"=>"Basic dGVzdDp0ZXN0"}, template_sets_out, 200
|
26
|
-
end
|
12
|
+
def teardown
|
13
|
+
FakeWeb.allow_net_connect = false
|
27
14
|
end
|
28
15
|
|
29
16
|
def test_find
|
17
|
+
register_fake_response_from_file :get, "/api/template_sets",
|
18
|
+
'template_sets.xml'
|
30
19
|
res = StudioApi::TemplateSet.find :all
|
31
20
|
assert_equal 6, res.size
|
32
21
|
assert_equal 42, res[0].template.size
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path('../../lib/studio_api',__FILE__)
|
2
|
+
|
3
|
+
require 'fakeweb'
|
4
|
+
require 'mocha'
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class Test::Unit::TestCase
|
8
|
+
@@username = "foo"
|
9
|
+
@@password = "api_password"
|
10
|
+
private
|
11
|
+
|
12
|
+
def register_fake_response request_type, request, response,
|
13
|
+
status = ["200", "OK"]
|
14
|
+
url = "http://#{@@username}:#{@@password}@localhost#{request}"
|
15
|
+
FakeWeb.register_uri(request_type, url, :body => response, :status => status)
|
16
|
+
end
|
17
|
+
|
18
|
+
def register_fake_response_from_file request_type, request, response_file_name,
|
19
|
+
status = ["200", "OK"]
|
20
|
+
response = IO.read(File.join(File.dirname(__FILE__),"responses",
|
21
|
+
response_file_name))
|
22
|
+
register_fake_response request_type, request, response, status
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
data/test/testdrive_test.rb
CHANGED
@@ -1,38 +1,25 @@
|
|
1
|
-
require '
|
2
|
-
require 'active_support'
|
3
|
-
require 'active_resource/http_mock'
|
4
|
-
require 'mocha'
|
5
|
-
require 'test/unit'
|
6
|
-
$:.unshift File.join( File.dirname(__FILE__), '..', 'lib')
|
7
|
-
require 'studio_api/testdrive'
|
8
|
-
require 'studio_api/connection'
|
1
|
+
require 'test_helper'
|
9
2
|
|
10
3
|
class TestdriveTest < Test::Unit::TestCase
|
11
|
-
BUILD_ID = 12345
|
12
|
-
|
13
|
-
def respond_load name
|
14
|
-
IO.read(File.join(File.dirname(__FILE__), "responses", name))
|
15
|
-
end
|
16
|
-
|
17
4
|
def setup
|
18
|
-
@
|
19
|
-
StudioApi::Testdrive.studio_connection = @connection
|
20
|
-
|
21
|
-
testdrives_out = respond_load "testdrives.xml"
|
22
|
-
testdrive_out = respond_load "testdrive.xml"
|
5
|
+
@build_id = 12345
|
23
6
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
7
|
+
FakeWeb.clean_registry
|
8
|
+
FakeWeb.allow_net_connect = false
|
9
|
+
@connection = StudioApi::Connection.new(@@username, @@password,"http://localhost/api/")
|
10
|
+
StudioApi::Testdrive.studio_connection = @connection
|
28
11
|
end
|
29
12
|
|
30
13
|
def test_find
|
31
|
-
|
14
|
+
register_fake_response_from_file :get, "/api/testdrives",
|
15
|
+
'testdrives.xml'
|
16
|
+
res = StudioApi::Testdrive.find :all
|
32
17
|
assert_equal 1, res.size
|
33
18
|
end
|
34
19
|
|
35
20
|
def test_new
|
36
|
-
|
21
|
+
register_fake_response_from_file :post, "/api/testdrives?build_id=#{@build_id}",
|
22
|
+
'testdrive.xml'
|
23
|
+
assert StudioApi::Testdrive.new(:build_id => @build_id).save
|
37
24
|
end
|
38
25
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: studio_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 3.1.
|
9
|
+
- 1
|
10
|
+
version: 3.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Josef Reidinger
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-06 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -50,21 +50,37 @@ dependencies:
|
|
50
50
|
version: 1.0.0
|
51
51
|
type: :runtime
|
52
52
|
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: yard
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
65
|
+
type: :development
|
66
|
+
version_requirements: *id003
|
53
67
|
description: |-
|
54
68
|
Studio Api makes it easier to use SuSE Studio (http://susestudio.com) via API.
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
69
|
+
Instead of adapting each ActiveResource to its behavior and
|
70
|
+
manually adding multipart file upload it wrapp in in Active
|
71
|
+
Resource like interface. It is possible to define credentials
|
72
|
+
for whole api, or use it per partes, so it allow using it for
|
73
|
+
different studio users together.
|
60
74
|
email: jreidinger@suse.cz
|
61
75
|
executables: []
|
62
76
|
|
63
77
|
extensions: []
|
64
78
|
|
65
|
-
extra_rdoc_files:
|
66
|
-
|
79
|
+
extra_rdoc_files:
|
80
|
+
- README
|
67
81
|
files:
|
82
|
+
- .gitignore
|
83
|
+
- Gemfile
|
68
84
|
- README
|
69
85
|
- Rakefile
|
70
86
|
- VERSION
|
@@ -85,6 +101,8 @@ files:
|
|
85
101
|
- lib/studio_api/template_set.rb
|
86
102
|
- lib/studio_api/testdrive.rb
|
87
103
|
- lib/studio_api/util.rb
|
104
|
+
- rubygem-studio_api.changes
|
105
|
+
- rubygem-studio_api.spec.template
|
88
106
|
- test/appliance_test.rb
|
89
107
|
- test/build_test.rb
|
90
108
|
- test/connection_test.rb
|
@@ -93,10 +111,7 @@ files:
|
|
93
111
|
- test/generic_request_test.rb
|
94
112
|
- test/repository_test.rb
|
95
113
|
- test/resource_test.rb
|
96
|
-
- test/
|
97
|
-
- test/running_build_test.rb
|
98
|
-
- test/template_set_test.rb
|
99
|
-
- test/testdrive_test.rb
|
114
|
+
- test/responses/api_version.xml
|
100
115
|
- test/responses/appliance.xml
|
101
116
|
- test/responses/appliances.xml
|
102
117
|
- test/responses/build.xml
|
@@ -114,8 +129,10 @@ files:
|
|
114
129
|
- test/responses/rpm.xml
|
115
130
|
- test/responses/rpms.xml
|
116
131
|
- test/responses/running_build.xml
|
132
|
+
- test/responses/running_build_image_already_exists.xml
|
117
133
|
- test/responses/running_builds.xml
|
118
134
|
- test/responses/software.xml
|
135
|
+
- test/responses/software_fake_response.xml
|
119
136
|
- test/responses/software_installed.xml
|
120
137
|
- test/responses/software_search.xml
|
121
138
|
- test/responses/status-broken.xml
|
@@ -127,6 +144,11 @@ files:
|
|
127
144
|
- test/responses/users_1.xml
|
128
145
|
- test/responses/users_2.xml
|
129
146
|
- test/responses/versions.xml
|
147
|
+
- test/rpm_test.rb
|
148
|
+
- test/running_build_test.rb
|
149
|
+
- test/template_set_test.rb
|
150
|
+
- test/test_helper.rb
|
151
|
+
- test/testdrive_test.rb
|
130
152
|
has_rdoc: true
|
131
153
|
homepage: http://github.com/jreidinger/studio_api
|
132
154
|
licenses:
|
@@ -136,7 +158,7 @@ post_install_message:
|
|
136
158
|
rdoc_options:
|
137
159
|
- --line-numbers
|
138
160
|
- --main
|
139
|
-
- README
|
161
|
+
- README
|
140
162
|
require_paths:
|
141
163
|
- lib
|
142
164
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -153,14 +175,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
175
|
requirements:
|
154
176
|
- - ">="
|
155
177
|
- !ruby/object:Gem::Version
|
156
|
-
hash:
|
178
|
+
hash: 23
|
157
179
|
segments:
|
158
|
-
-
|
159
|
-
|
180
|
+
- 1
|
181
|
+
- 3
|
182
|
+
- 6
|
183
|
+
version: 1.3.6
|
160
184
|
requirements: []
|
161
185
|
|
162
|
-
rubyforge_project:
|
163
|
-
rubygems_version: 1.
|
186
|
+
rubyforge_project: studio_api
|
187
|
+
rubygems_version: 1.6.2
|
164
188
|
signing_key:
|
165
189
|
specification_version: 3
|
166
190
|
summary: Intuitive ruby bindings to Studio Api Interface.
|
@@ -173,6 +197,7 @@ test_files:
|
|
173
197
|
- test/generic_request_test.rb
|
174
198
|
- test/repository_test.rb
|
175
199
|
- test/resource_test.rb
|
200
|
+
- test/responses/api_version.xml
|
176
201
|
- test/responses/appliance.xml
|
177
202
|
- test/responses/appliances.xml
|
178
203
|
- test/responses/build.xml
|
@@ -190,8 +215,10 @@ test_files:
|
|
190
215
|
- test/responses/rpm.xml
|
191
216
|
- test/responses/rpms.xml
|
192
217
|
- test/responses/running_build.xml
|
218
|
+
- test/responses/running_build_image_already_exists.xml
|
193
219
|
- test/responses/running_builds.xml
|
194
220
|
- test/responses/software.xml
|
221
|
+
- test/responses/software_fake_response.xml
|
195
222
|
- test/responses/software_installed.xml
|
196
223
|
- test/responses/software_search.xml
|
197
224
|
- test/responses/status-broken.xml
|
@@ -206,4 +233,5 @@ test_files:
|
|
206
233
|
- test/rpm_test.rb
|
207
234
|
- test/running_build_test.rb
|
208
235
|
- test/template_set_test.rb
|
236
|
+
- test/test_helper.rb
|
209
237
|
- test/testdrive_test.rb
|