pulp 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +19 -0
  4. data/Gemfile.lock +42 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +147 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/examples/repositories.rb +205 -0
  10. data/examples/test_pulp.yml +4 -0
  11. data/lib/pulp.rb +26 -0
  12. data/lib/pulp/cds.rb +25 -0
  13. data/lib/pulp/common/debug.rb +37 -0
  14. data/lib/pulp/common/lifecycle.rb +166 -0
  15. data/lib/pulp/common/lifecycle/create.rb +16 -0
  16. data/lib/pulp/common/lifecycle/delete.rb +23 -0
  17. data/lib/pulp/common/lifecycle/get.rb +22 -0
  18. data/lib/pulp/common/lifecycle/update.rb +23 -0
  19. data/lib/pulp/connection/base.rb +84 -0
  20. data/lib/pulp/connection/handler.rb +59 -0
  21. data/lib/pulp/consumer.rb +23 -0
  22. data/lib/pulp/consumergroup.rb +22 -0
  23. data/lib/pulp/content.rb +14 -0
  24. data/lib/pulp/distribution.rb +11 -0
  25. data/lib/pulp/errata.rb +17 -0
  26. data/lib/pulp/event.rb +8 -0
  27. data/lib/pulp/filter.rb +19 -0
  28. data/lib/pulp/package.rb +20 -0
  29. data/lib/pulp/package_group.rb +8 -0
  30. data/lib/pulp/package_group_category.rb +7 -0
  31. data/lib/pulp/repository.rb +114 -0
  32. data/lib/pulp/service.rb +51 -0
  33. data/lib/pulp/task.rb +37 -0
  34. data/lib/pulp/task_history.rb +10 -0
  35. data/lib/pulp/task_snapshot.rb +9 -0
  36. data/lib/pulp/user.rb +12 -0
  37. data/spec/pulp/common/debug_spec.rb +42 -0
  38. data/spec/pulp/common/lifecycle/create_spec.rb +21 -0
  39. data/spec/pulp/common/lifecycle/delete_spec.rb +40 -0
  40. data/spec/pulp/common/lifecycle/get_spec.rb +42 -0
  41. data/spec/pulp/common/lifecycle/update_spec.rb +48 -0
  42. data/spec/pulp/common/lifecycle_spec.rb +393 -0
  43. data/spec/pulp/connection/base_spec.rb +312 -0
  44. data/spec/pulp/connection/handler_spec.rb +123 -0
  45. data/spec/pulp/content_spec.rb +21 -0
  46. data/spec/pulp/package_spec.rb +14 -0
  47. data/spec/pulp/repository_spec.rb +14 -0
  48. data/spec/pulp/service_spec.rb +85 -0
  49. data/spec/pulp/task_spec.rb +48 -0
  50. data/spec/pulp_spec.rb +4 -0
  51. data/spec/spec.opts +6 -0
  52. data/spec/spec_helper.rb +32 -0
  53. metadata +252 -0
@@ -0,0 +1,312 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ module Pulp
5
+ class Test < Pulp::Connection::Base
6
+ end
7
+ end
8
+
9
+ module Pulp
10
+ class Test2 < Pulp::Connection::Base
11
+ end
12
+ end
13
+
14
+ describe Pulp::Connection::Base do
15
+ describe ".reset" do
16
+ it "resets the used base" do
17
+ a = Pulp::Test.send(:base)
18
+ Pulp::Test.reset
19
+ a.should_not eql(Pulp::Test.send(:base))
20
+ end
21
+ end
22
+
23
+ describe ".identifier" do
24
+ it "is the downcased class name" do
25
+ Pulp::Test.identifier.should eql('test')
26
+ end
27
+ end
28
+
29
+ describe ".base" do
30
+ it "differs based on the used class" do
31
+ Pulp::Test.base.should_not eql(Pulp::Test2.send(:base))
32
+ end
33
+ end
34
+
35
+ describe ".plain_base" do
36
+ it "is without any context" do
37
+ Pulp::Test.plain_base.url.should eql('https://localhost/pulp/api/')
38
+ end
39
+ end
40
+
41
+ describe ".parse_item_cmd" do
42
+ context "with an item" do
43
+ it "should prefix with an item" do
44
+ Pulp::Test.parse_item_cmd('foo','bla').should eql('/foo/bla')
45
+ end
46
+ it "should not double prefix the cmd" do
47
+ Pulp::Test.parse_item_cmd('foo','/bla').should eql('/foo/bla')
48
+ end
49
+ end
50
+ context "without an item" do
51
+ it "should prefix the cmd with a slash" do
52
+ Pulp::Test.parse_item_cmd(nil,'bla').should eql('/bla')
53
+ end
54
+ it "should not double prefix the cmd" do
55
+ Pulp::Test.parse_item_cmd(nil,'/bla').should eql('/bla')
56
+ end
57
+ end
58
+ end
59
+
60
+ describe ".merge_params" do
61
+ it "should return an empty hash on no params" do
62
+ Pulp::Test.merge_params(nil).should eql({})
63
+ end
64
+ it "should add the params" do
65
+ Pulp::Test.merge_params({:b => 2}).should eql({ :params => {:b => 2}})
66
+ end
67
+ end
68
+ describe "base actions" do
69
+ before(:each) do
70
+ @context = Object.new
71
+ end
72
+ describe ".plain_get" do
73
+ before(:each) do
74
+ Pulp::Test.plain_base.connection.expects(:[]).with('foo').returns(@context)
75
+ end
76
+ context "without params" do
77
+ before(:each) do
78
+ @context.expects(:get).with({}).returns(DummyResult)
79
+ end
80
+ it "should return a parsed get" do
81
+ Pulp::Test.plain_get('foo').should eql(DummyResult.real_body)
82
+ end
83
+ it "should strip the api url prefix" do
84
+ Pulp::Test.plain_get('/pulp/api/foo').should eql(DummyResult.real_body)
85
+ end
86
+ end
87
+ context "with params" do
88
+ before(:each) do
89
+ @context.expects(:get).with(:params => { :b => 2}).returns(DummyResult)
90
+ end
91
+ it "should add the params" do
92
+ Pulp::Test.plain_get('/pulp/api/foo',:b => 2).should eql(DummyResult.real_body)
93
+ end
94
+ end
95
+ end
96
+ context "parsed" do
97
+ [:get, :delete ].each do |method|
98
+ describe ".base_#{method}" do
99
+ context "with an item" do
100
+ before(:each) do
101
+ Pulp::Test.base.connection.expects(:[]).with('/blub/foo').returns(@context)
102
+ end
103
+ context "without params" do
104
+ before(:each) do
105
+ @context.expects(method).with({}).returns(DummyResult)
106
+ end
107
+ it "should return a parsed #{method}" do
108
+ Pulp::Test.send(:"base_#{method}",'foo','blub').should eql(DummyResult.real_body)
109
+ end
110
+ end
111
+ context "with a params" do
112
+ before(:each) do
113
+ @context.expects(method).with({ :params => {:b => 2 }}).returns(DummyResult)
114
+ end
115
+ it "should return a parsed #{method}" do
116
+ Pulp::Test.send(:"base_#{method}",'foo','blub',:b => 2).should eql(DummyResult.real_body)
117
+ end
118
+ end
119
+ end
120
+ context "without an item" do
121
+ before(:each) do
122
+ Pulp::Test.base.connection.expects(:[]).with('/foo').returns(@context)
123
+ end
124
+ context "without params" do
125
+ before(:each) do
126
+ @context.expects(method).with({}).returns(DummyResult)
127
+ end
128
+ it "should return a parsed #{method}" do
129
+ Pulp::Test.send(:"base_#{method}",'foo').should eql(DummyResult.real_body)
130
+ end
131
+ end
132
+ context "with params" do
133
+ before(:each) do
134
+ @context.expects(method).with({:params => {:b => 2 }}).returns(DummyResult)
135
+ end
136
+ it "should return a parsed #{method}" do
137
+ Pulp::Test.send(:"base_#{method}",'foo',nil,:b => 2).should eql(DummyResult.real_body)
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ [:post,:put].each do |method|
144
+ describe ".base_#{method}" do
145
+ context "with an item" do
146
+ before(:each) do
147
+ Pulp::Test.base.connection.expects(:[]).with('/blub/foo').returns(@context)
148
+ end
149
+ context "without params" do
150
+ before(:each) do
151
+ @context.expects(method).with(nil,{:content_type => :json}).returns(DummyResult)
152
+ end
153
+ it "should return a parsed #{method}" do
154
+ Pulp::Test.send(:"base_#{method}",'foo','blub').should eql(DummyResult.real_body)
155
+ end
156
+ end
157
+ context "with a params" do
158
+ before(:each) do
159
+ @context.expects(method).with({:b => 2 }.to_json,{:content_type => :json}).returns(DummyResult)
160
+ end
161
+ it "should return a parsed #{method}" do
162
+ Pulp::Test.send(:"base_#{method}",'foo','blub',:b => 2).should eql(DummyResult.real_body)
163
+ end
164
+ end
165
+ end
166
+ context "without an item" do
167
+ before(:each) do
168
+ Pulp::Test.base.connection.expects(:[]).with('/foo').returns(@context)
169
+ end
170
+ context "without params" do
171
+ before(:each) do
172
+ @context.expects(method).with(nil,{:content_type => :json}).returns(DummyResult)
173
+ end
174
+ it "should return a parsed #{method}" do
175
+ Pulp::Test.send(:"base_#{method}",'foo').should eql(DummyResult.real_body)
176
+ end
177
+ end
178
+ context "with params" do
179
+ before(:each) do
180
+ @context.expects(method).with({:b => 2 }.to_json, {:content_type => :json}).returns(DummyResult)
181
+ end
182
+ it "should return a parsed #{method}" do
183
+ Pulp::Test.send(:"base_#{method}",'foo',nil,:b => 2).should eql(DummyResult.real_body)
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
190
+ context "unparsed" do
191
+ [:get, :delete ].each do |method|
192
+ describe ".base_unparsed_#{method}" do
193
+ context "with an item" do
194
+ before(:each) do
195
+ Pulp::Test.base.connection.expects(:[]).with('/blub/foo').returns(@context)
196
+ end
197
+ context "without params" do
198
+ before(:each) do
199
+ @context.expects(method).with({}).returns(UnparsedDummyResult)
200
+ end
201
+ it "should return an unparsed #{method}" do
202
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo','blub').should eql(UnparsedDummyResult.real_body)
203
+ end
204
+ end
205
+ context "with a params" do
206
+ before(:each) do
207
+ @context.expects(method).with({ :params => {:b => 2 }}).returns(UnparsedDummyResult)
208
+ end
209
+ it "should return an unparsed #{method}" do
210
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo','blub',:b => 2).should eql(UnparsedDummyResult.real_body)
211
+ end
212
+ end
213
+ end
214
+ context "without an item" do
215
+ before(:each) do
216
+ Pulp::Test.base.connection.expects(:[]).with('/foo').returns(@context)
217
+ end
218
+ context "without params" do
219
+ before(:each) do
220
+ @context.expects(method).with({}).returns(UnparsedDummyResult)
221
+ end
222
+ it "should return an unparsed #{method}" do
223
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo').should eql(UnparsedDummyResult.real_body)
224
+ end
225
+ end
226
+ context "with params" do
227
+ before(:each) do
228
+ @context.expects(method).with({:params => {:b => 2 }}).returns(UnparsedDummyResult)
229
+ end
230
+ it "should return an unparsed #{method}" do
231
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo',nil,:b => 2).should eql(UnparsedDummyResult.real_body)
232
+ end
233
+ end
234
+ end
235
+ end
236
+ end
237
+ [:post,:put].each do |method|
238
+ describe ".base_#{method}" do
239
+ context "with an item" do
240
+ before(:each) do
241
+ Pulp::Test.base.connection.expects(:[]).with('/blub/foo').returns(@context)
242
+ end
243
+ context "without params" do
244
+ before(:each) do
245
+ @context.expects(method).with(nil,{:content_type => :json}).returns(UnparsedDummyResult)
246
+ end
247
+ it "should return an unparsed #{method}" do
248
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo','blub').should eql(UnparsedDummyResult.real_body)
249
+ end
250
+ end
251
+ context "with a params" do
252
+ before(:each) do
253
+ @context.expects(method).with({:b => 2 }.to_json,{:content_type => :json}).returns(UnparsedDummyResult)
254
+ end
255
+ it "should return a unparsed #{method}" do
256
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo','blub',:b => 2).should eql(UnparsedDummyResult.real_body)
257
+ end
258
+ end
259
+ end
260
+ context "without an item" do
261
+ before(:each) do
262
+ Pulp::Test.base.connection.expects(:[]).with('/foo').returns(@context)
263
+ end
264
+ context "without params" do
265
+ before(:each) do
266
+ @context.expects(method).with(nil,{:content_type => :json}).returns(UnparsedDummyResult)
267
+ end
268
+ it "should return an unparsed #{method}" do
269
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo').should eql(UnparsedDummyResult.real_body)
270
+ end
271
+ end
272
+ context "with params" do
273
+ before(:each) do
274
+ @context.expects(method).with({:b => 2 }.to_json, {:content_type => :json}).returns(UnparsedDummyResult)
275
+ end
276
+ it "should return an unparsed #{method}" do
277
+ Pulp::Test.send(:"base_unparsed_#{method}",'foo',nil,:b => 2).should eql(UnparsedDummyResult.real_body)
278
+ end
279
+ end
280
+ end
281
+ end
282
+ end
283
+ end
284
+ end
285
+ [:hostname,:username, :password].each do |field|
286
+ describe ".#{field}" do
287
+ it "provides a way to set and read a #{field}" do
288
+ Pulp::Test.should respond_to("#{field}=")
289
+ Pulp::Test.should respond_to("#{field}")
290
+ end
291
+
292
+ it "is used for the base connection" do
293
+ Pulp::Test.reset
294
+ Pulp::Test.send("#{field}=","foo")
295
+ Pulp::Test.send(:base).instance_variable_get("@#{field}").should eql("foo")
296
+ end
297
+ end
298
+ end
299
+ describe "default special fields" do
300
+ [:id, :_id].each do |field|
301
+ it "#{field} is a special_field" do
302
+ Pulp::Connection::Base.special_fields.should include(field)
303
+ end
304
+ end
305
+ end
306
+
307
+ describe "initialization" do
308
+ it "initializes the fields with the supplied data" do
309
+ Pulp::Test.new(:a => 1).fields[:a].should eql(1)
310
+ end
311
+ end
312
+ end
@@ -0,0 +1,123 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ describe Pulp::Connection::Handler do
5
+
6
+ [:hostname,:username, :password].each do |field|
7
+ it "provides a way to set and read a default #{field}" do
8
+ Pulp::Connection::Handler.should respond_to("#{field}=")
9
+ Pulp::Connection::Handler.should respond_to("#{field}")
10
+ end
11
+ end
12
+
13
+ describe ".instance_for" do
14
+ it "returns an instance of Pulp::Connection::Handler" do
15
+ Pulp::Connection::Handler.instance_for(:foo).should be_a(Pulp::Connection::Handler)
16
+ end
17
+
18
+ it "caches the instances" do
19
+ Pulp::Connection::Handler.instance_for(:foo).should eql(Pulp::Connection::Handler.instance_for(:foo))
20
+ end
21
+
22
+ it "takes default hostname if no argument is passed" do
23
+ Pulp::Connection::Handler.hostname = 'blub'
24
+ Pulp::Connection::Handler.instance_for(:default_hostname).instance_variable_get('@hostname').should eql('blub')
25
+ end
26
+ it "takes passed hostname" do
27
+ Pulp::Connection::Handler.hostname = 'blub'
28
+ Pulp::Connection::Handler.instance_for(:default_hostname2,'bla').instance_variable_get('@hostname').should eql('bla')
29
+ end
30
+
31
+ it "takes default username if no argument is passed" do
32
+ Pulp::Connection::Handler.username = 'user'
33
+ Pulp::Connection::Handler.instance_for(:default_user,'bla').instance_variable_get('@username').should eql('user')
34
+ end
35
+ it "takes passed username" do
36
+ Pulp::Connection::Handler.username = 'user'
37
+ Pulp::Connection::Handler.instance_for(:default_user2,'bla','user2').instance_variable_get('@username').should eql('user2')
38
+ end
39
+
40
+ it "takes default password if no argument is passed" do
41
+ Pulp::Connection::Handler.password = 'secret'
42
+ Pulp::Connection::Handler.instance_for(:default_pwd,'bla','user').instance_variable_get('@password').should eql('secret')
43
+ end
44
+ it "takes passed password" do
45
+ Pulp::Connection::Handler.password = 'secret'
46
+ Pulp::Connection::Handler.instance_for(:default_pwd2,'bla','user2','secret2').instance_variable_get('@password').should eql('secret2')
47
+ end
48
+
49
+ it "defaults https to true" do
50
+ Pulp::Connection::Handler.instance_for(:default_https,'bla','user','secret2').instance_variable_get('@https').should eql(true)
51
+ end
52
+ it "takes passed https setting" do
53
+ Pulp::Connection::Handler.instance_for(:default_https2,'bla','user2','secret2',false).instance_variable_get('@https').should eql(false)
54
+ end
55
+ end
56
+
57
+ describe ".reset" do
58
+ it "removes a cached instance" do
59
+ a = Pulp::Connection::Handler.instance_for(:cache_reset)
60
+ Pulp::Connection::Handler.reset_instance(:cache_reset)
61
+ Pulp::Connection::Handler.instance_for(:cache_reset).should_not eql(a)
62
+ end
63
+
64
+ it "does not raise an error on an inexistant instance" do
65
+ lambda { Pulp::Connection::Handler.reset_instance(:blablablabla) }.should_not raise_error
66
+ end
67
+ end
68
+ describe ".reset_all" do
69
+ it "resets all connections" do
70
+ a = Pulp::Connection::Handler.instance_for(:cache_reset)
71
+ Pulp::Connection::Handler.send(:instances).should_not be_empty
72
+ Pulp::Connection::Handler.reset_all
73
+ Pulp::Connection::Handler.send(:instances).should be_empty
74
+ end
75
+ end
76
+
77
+ describe "an instance" do
78
+ let(:instance) do
79
+ Pulp::Connection::Handler.hostname = 'localhost'
80
+ Pulp::Connection::Handler.username = 'admin'
81
+ Pulp::Connection::Handler.password = 'admin'
82
+ Pulp::Connection::Handler.instance_for(:instance)
83
+ end
84
+ before(:each) { Pulp::Connection::Handler.reset_all }
85
+ describe "#parsed" do
86
+ it "gets the connection passed" do
87
+ instance.parsed{|conn| conn.should eql(instance.connection); DummyResult }
88
+ end
89
+
90
+ it "parses the result" do
91
+ instance.parsed{|conn| DummyResult }['a'].should eql(1)
92
+ end
93
+ end
94
+
95
+ describe "#connection" do
96
+ it "'s url should match our url" do
97
+ instance.connection.url.should eql(instance.url)
98
+ end
99
+ it "'s user should match our username" do
100
+ instance.connection.user.should eql(Pulp::Connection::Handler.username)
101
+ end
102
+ it "'s passowrd should match our password" do
103
+ instance.connection.password.should eql(Pulp::Connection::Handler.password)
104
+ end
105
+ end
106
+
107
+ describe "#api_path" do
108
+ it "is a fixed apth" do
109
+ instance.api_path.should eql("/pulp/api")
110
+ end
111
+ end
112
+
113
+ describe "#url" do
114
+ it "should be a full url depending on the identifier" do
115
+ instance.url.should eql("https://localhost/pulp/api/instances")
116
+ end
117
+ it "should depend on the https flag" do
118
+ i = Pulp::Connection::Handler.instance_for(:second_instance,'localhost','user','password',false)
119
+ i.url.should eql("http://localhost/pulp/api/second_instances")
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,21 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe Pulp::Content do
5
+
6
+
7
+ describe ".file" do
8
+ it "should get the file content of the passed id" do
9
+ Pulp::Content.expects(:base_get).with('','files/',{:id => 'ff'}).returns('a')
10
+ Pulp::Content.file('ff').should eql('a')
11
+ end
12
+ end
13
+
14
+ describe ".delete_file" do
15
+ it "shold delete the file with the passed id" do
16
+ Pulp::Content.expects(:base_delete).with('','files/ff/',nil).returns(nil)
17
+ Pulp::Content.delete_file('ff').should be_nil
18
+ end
19
+ end
20
+
21
+ end