rhn_satellite 0.0.4

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 (37) hide show
  1. data/.rspec +1 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +30 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +94 -0
  6. data/Rakefile +49 -0
  7. data/VERSION +1 -0
  8. data/lib/rhn_satellite.rb +25 -0
  9. data/lib/rhn_satellite/activation_key.rb +5 -0
  10. data/lib/rhn_satellite/api.rb +36 -0
  11. data/lib/rhn_satellite/channel.rb +5 -0
  12. data/lib/rhn_satellite/channel_access.rb +20 -0
  13. data/lib/rhn_satellite/channel_software.rb +20 -0
  14. data/lib/rhn_satellite/common/collection.rb +15 -0
  15. data/lib/rhn_satellite/common/debug.rb +35 -0
  16. data/lib/rhn_satellite/common/misc.rb +24 -0
  17. data/lib/rhn_satellite/connection/base.rb +25 -0
  18. data/lib/rhn_satellite/connection/handler.rb +116 -0
  19. data/lib/rhn_satellite/package.rb +15 -0
  20. data/lib/rhn_satellite/system.rb +83 -0
  21. data/lib/rhn_satellite/systemgroup.rb +34 -0
  22. data/rhn_satellite.gemspec +87 -0
  23. data/spec/spec.opts +6 -0
  24. data/spec/spec_helper.rb +12 -0
  25. data/spec/unit/rhn_satellite/activation_key_spec.rb +58 -0
  26. data/spec/unit/rhn_satellite/api_spec.rb +94 -0
  27. data/spec/unit/rhn_satellite/channel_access_spec.rb +61 -0
  28. data/spec/unit/rhn_satellite/channel_software_spec.rb +65 -0
  29. data/spec/unit/rhn_satellite/channel_spec.rb +58 -0
  30. data/spec/unit/rhn_satellite/common/debug_spec.rb +42 -0
  31. data/spec/unit/rhn_satellite/common/misc_spec.rb +33 -0
  32. data/spec/unit/rhn_satellite/connection/base_spec.rb +44 -0
  33. data/spec/unit/rhn_satellite/connection/handler_spec.rb +229 -0
  34. data/spec/unit/rhn_satellite/package_spec.rb +52 -0
  35. data/spec/unit/rhn_satellite/system_spec.rb +320 -0
  36. data/spec/unit/rhn_satellite/systemgroup_spec.rb +127 -0
  37. metadata +180 -0
@@ -0,0 +1,61 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ describe RhnSatellite::ChannelAccess do
5
+ before(:each) do
6
+ RhnSatellite::ChannelAccess.reset
7
+ conn = Object.new
8
+ conn.stubs(:call)
9
+
10
+ XMLRPC::Client.stubs(:new2).returns(conn)
11
+
12
+ RhnSatellite::ChannelAccess.username = 'user'
13
+ RhnSatellite::ChannelAccess.password = 'pwd'
14
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("auth.login",'user','pwd').returns("token")
15
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("auth.logout",'token')
16
+ end
17
+
18
+ describe ".disable_user_restrictions" do
19
+ it "disables the user restrictions" do
20
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
21
+ "channel.access.disableUserRestrictions",
22
+ "token",
23
+ 'some_channel').returns(1)
24
+
25
+ RhnSatellite::ChannelAccess.disable_user_restrictions('some_channel').should eql(1)
26
+ end
27
+ end
28
+
29
+ describe ".enable_user_restrictions" do
30
+ it "enables the user restrictions" do
31
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
32
+ "channel.access.enableUserRestrictions",
33
+ "token",
34
+ 'some_channel').returns(1)
35
+
36
+ RhnSatellite::ChannelAccess.enable_user_restrictions('some_channel').should eql(1)
37
+ end
38
+ end
39
+
40
+ describe ".get_org_sharing" do
41
+ it "returns the org sharing access" do
42
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
43
+ "channel.access.getOrgSharing",
44
+ "token",
45
+ 'some_channel').returns('public')
46
+
47
+ RhnSatellite::ChannelAccess.get_org_sharing('some_channel').should eql('public')
48
+ end
49
+ end
50
+ describe ".set_org_sharing" do
51
+ it "sets the org sharing access" do
52
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
53
+ "channel.access.setOrgSharing",
54
+ "token",
55
+ 'some_channel',
56
+ 'public').returns(1)
57
+
58
+ RhnSatellite::ChannelAccess.set_org_sharing('some_channel','public').should eql(1)
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,65 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ describe RhnSatellite::ChannelSoftware do
5
+ before(:each) do
6
+ RhnSatellite::ChannelSoftware.reset
7
+ conn = Object.new
8
+ conn.stubs(:call)
9
+
10
+ XMLRPC::Client.stubs(:new2).returns(conn)
11
+
12
+ RhnSatellite::ChannelSoftware.username = 'user'
13
+ RhnSatellite::ChannelSoftware.password = 'pwd'
14
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("auth.login",'user','pwd').returns("token")
15
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("auth.logout",'token')
16
+ end
17
+
18
+ describe ".clone" do
19
+
20
+ it "clones a channel" do
21
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
22
+ "channel.software.clone",
23
+ "token",
24
+ 'old_channel',
25
+ {
26
+ 'name' => 'new_channel',
27
+ 'label' => 'some_label',
28
+ 'summary' => 'summary'
29
+ },
30
+ true
31
+ ).returns("123")
32
+
33
+ RhnSatellite::ChannelSoftware.clone('old_channel','new_channel','some_label','summary')
34
+ end
35
+ context "with additional options" do
36
+ it "should pass these options" do
37
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
38
+ "channel.software.clone",
39
+ "token",
40
+ 'old_channel',
41
+ {
42
+ 'name' => 'new_channel',
43
+ 'label' => 'some_label',
44
+ 'summary' => 'summary',
45
+ 'parent_label' => 'blub'
46
+ },
47
+ true
48
+ ).returns("123")
49
+
50
+ RhnSatellite::ChannelSoftware.clone('old_channel','new_channel','some_label','summary',true,'parent_label' => 'blub')
51
+ end
52
+ end
53
+ end
54
+
55
+ describe ".list_children" do
56
+ it "lists all children of a software channel" do
57
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with(
58
+ "channel.software.listChildren",
59
+ "token",
60
+ 'channel_label').returns("123")
61
+
62
+ RhnSatellite::ChannelSoftware.list_children('channel_label')
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,58 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ describe RhnSatellite::Channel do
5
+ before(:each) { RhnSatellite::Channel.reset }
6
+
7
+ describe ".all" do
8
+ before(:each) do
9
+ conn = Object.new
10
+ conn.stubs(:call)
11
+
12
+ XMLRPC::Client.stubs(:new2).returns(conn)
13
+
14
+ RhnSatellite::Channel.username = 'user'
15
+ RhnSatellite::Channel.password = 'pwd'
16
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("auth.login",'user','pwd').returns("token")
17
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("auth.logout",'token')
18
+ end
19
+ it "logins and returns a bunch of channels" do
20
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("channel.listAllChannels","token").returns(["123","234"])
21
+
22
+ RhnSatellite::Channel.all.should eql(["123","234"])
23
+ end
24
+
25
+ it "returns an empty array on an empty answer" do
26
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("channel.listAllChannels","token").returns(nil)
27
+
28
+ RhnSatellite::Channel.all.should eql([])
29
+ end
30
+
31
+ it "iterates the items over the block" do
32
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with("channel.listAllChannels","token").returns(["123","234"])
33
+ RhnSatellite::Channel.all{|i| ["123","234"].include?(i).should be_true }.should eql(["123","234"])
34
+ end
35
+ describe ".get" do
36
+ context "with systems" do
37
+ before :each do
38
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with('channel.listAllChannels',"token").returns([{'name' => "123"},{'name' => "234"}])
39
+ end
40
+ it "finds a system in all systems" do
41
+ RhnSatellite::Channel.get('123').should eql({'name' => '123'})
42
+ end
43
+
44
+ it "returns nil on an non-existant system" do
45
+ RhnSatellite::Channel.get('12333').should eql(nil)
46
+ end
47
+ end
48
+ context "without any systems" do
49
+ before :each do
50
+ RhnSatellite::Connection::Handler.any_instance.expects(:make_call).with('channel.listAllChannels',"token").returns([])
51
+ end
52
+ it "returns nil" do
53
+ RhnSatellite::Channel.get('12333').should eql(nil)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,42 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../../spec_helper'
3
+
4
+ class TestDebug
5
+ include RhnSatellite::Common::Debug
6
+ end
7
+
8
+ describe RhnSatellite::Common::Debug do
9
+ it "should provide a way to set and query a debug flag" do
10
+ TestDebug.should respond_to(:debug_enabled)
11
+ TestDebug.should respond_to(:debug_enabled=)
12
+ end
13
+
14
+ it "should provide a way to set and query an output engine" do
15
+ TestDebug.should respond_to(:output)
16
+ TestDebug.should respond_to(:output=)
17
+ end
18
+
19
+ it "should provide a method to print debug messages on class and instance level" do
20
+ TestDebug.should respond_to(:debug)
21
+ TestDebug.new.should respond_to(:debug)
22
+ end
23
+
24
+ it "should not have debugging enabled by default" do
25
+ TestDebug.debug_enabled.should == false
26
+ end
27
+
28
+ it "should not print out a debug message if the debug flag is not set" do
29
+ output = Object.new
30
+ output.expects(:puts).with('foo').never
31
+ TestDebug.output = output
32
+ TestDebug.debug('foo')
33
+ end
34
+
35
+ it "should print out a debug message if the debug flag is set" do
36
+ TestDebug.debug_enabled = true
37
+ output = Object.new
38
+ output.expects(:puts).with('foo').once
39
+ TestDebug.output = output
40
+ TestDebug.debug('foo')
41
+ end
42
+ end
@@ -0,0 +1,33 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../../spec_helper'
3
+
4
+ describe RhnSatellite::Common::Misc do
5
+ describe ".gen_date_time" do
6
+ it "uses now by default" do
7
+ now = Time.now
8
+ Time.expects(:now).once.returns(now)
9
+ (res=subject.gen_date_time).should be_kind_of(XMLRPC::DateTime)
10
+ res.min.should eql(now.min)
11
+ end
12
+
13
+ it "has the default as 'now'" do
14
+ now = Time.now
15
+ Time.expects(:now).once.returns(now)
16
+ (res=subject.gen_date_time('now')).should be_kind_of(XMLRPC::DateTime)
17
+ res.min.should eql(now.min)
18
+ end
19
+
20
+ [DateTime,Time].each do |type|
21
+ it "converts #{type.name} to a XMLRPC::DateTime" do
22
+ now = type.now
23
+ (res=subject.gen_date_time).should be_kind_of(XMLRPC::DateTime)
24
+ res.min.should eql(now.min)
25
+ end
26
+ end
27
+
28
+ it "pass everything else" do
29
+ a = 'blub'
30
+ subject.gen_date_time(a).should eql(a)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../../spec_helper'
3
+
4
+ module RhnSatellite
5
+ class Test < RhnSatellite::Connection::Base
6
+ end
7
+ end
8
+
9
+ module RhnSatellite
10
+ class Test2 < RhnSatellite::Connection::Base
11
+ end
12
+ end
13
+
14
+ describe RhnSatellite::Connection::Base do
15
+ describe "#reset" do
16
+ it "resets the used base" do
17
+ a = RhnSatellite::Test.send(:base)
18
+ RhnSatellite::Test.reset
19
+ a.should_not eql(RhnSatellite::Test.send(:base))
20
+ end
21
+ end
22
+
23
+ describe "#base" do
24
+ it "differs based on the used class" do
25
+ RhnSatellite::Test.send(:base).should_not eql(RhnSatellite::Test2.send(:base))
26
+ end
27
+ end
28
+
29
+ [:hostname,:username, :password].each do |field|
30
+ describe "##{field}" do
31
+ it "provides a way to set and read a #{field}" do
32
+ RhnSatellite::Test.should respond_to("#{field}=")
33
+ RhnSatellite::Test.should respond_to("#{field}")
34
+ end
35
+
36
+ it "is used for the base connection" do
37
+ RhnSatellite::Test.reset
38
+ RhnSatellite::Test.send("#{field}=","foo")
39
+ RhnSatellite::Test.send(:base).instance_variable_get("@#{field}").should eql("foo")
40
+ end
41
+ end
42
+ end
43
+
44
+ end
@@ -0,0 +1,229 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../../spec_helper'
3
+
4
+ describe RhnSatellite::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
+ RhnSatellite::Connection::Handler.should respond_to("default_#{field}=")
9
+ RhnSatellite::Connection::Handler.should respond_to("default_#{field}")
10
+ end
11
+ end
12
+
13
+ describe ".instance_for" do
14
+ it "returns an instance of RhnSatellite::Connection::Handler" do
15
+ RhnSatellite::Connection::Handler.instance_for(:foo).should be_a(RhnSatellite::Connection::Handler)
16
+ end
17
+
18
+ it "caches the instances" do
19
+ RhnSatellite::Connection::Handler.instance_for(:foo).should eql(RhnSatellite::Connection::Handler.instance_for(:foo))
20
+ end
21
+
22
+ it "takes default hostname if no argument is passed" do
23
+ RhnSatellite::Connection::Handler.default_hostname = 'blub'
24
+ RhnSatellite::Connection::Handler.instance_for(:default_hostname).instance_variable_get('@hostname').should eql('blub')
25
+ end
26
+ it "takes passed hostname" do
27
+ RhnSatellite::Connection::Handler.default_hostname = 'blub'
28
+ RhnSatellite::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
+ RhnSatellite::Connection::Handler.default_username = 'user'
33
+ RhnSatellite::Connection::Handler.instance_for(:default_user,'bla').instance_variable_get('@username').should eql('user')
34
+ end
35
+ it "takes passed username" do
36
+ RhnSatellite::Connection::Handler.default_username = 'user'
37
+ RhnSatellite::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
+ RhnSatellite::Connection::Handler.default_password = 'secret'
42
+ RhnSatellite::Connection::Handler.instance_for(:default_pwd,'bla','user').instance_variable_get('@password').should eql('secret')
43
+ end
44
+ it "takes passed password" do
45
+ RhnSatellite::Connection::Handler.default_password = 'secret'
46
+ RhnSatellite::Connection::Handler.instance_for(:default_pwd2,'bla','user2','secret2').instance_variable_get('@password').should eql('secret2')
47
+ end
48
+
49
+ it "takes default timeout if no argument is passed" do
50
+ RhnSatellite::Connection::Handler.default_timeout = 60
51
+ RhnSatellite::Connection::Handler.instance_for(:default_timeout,'bla','user','foo',60).instance_variable_get('@timeout').should eql(60)
52
+ end
53
+ it "takes passed timeout" do
54
+ RhnSatellite::Connection::Handler.default_timeout = 60
55
+ RhnSatellite::Connection::Handler.instance_for(:default_timeout2,'bla','user2','secret2',65).instance_variable_get('@timeout').should eql(65)
56
+ end
57
+
58
+ it "defaults https to true" do
59
+ RhnSatellite::Connection::Handler.instance_for(:default_https,'bla','user','secret2').instance_variable_get('@https').should eql(true)
60
+ end
61
+ it "takes passed https setting" do
62
+ RhnSatellite::Connection::Handler.instance_for(:default_https2,'bla','user2','secret2',30,false).instance_variable_get('@https').should eql(false)
63
+ end
64
+ end
65
+
66
+ describe ".reset" do
67
+ it "removes a cached instance" do
68
+ a = RhnSatellite::Connection::Handler.instance_for(:cache_reset)
69
+ RhnSatellite::Connection::Handler.reset_instance(:cache_reset)
70
+ RhnSatellite::Connection::Handler.instance_for(:cache_reset).should_not eql(a)
71
+ end
72
+
73
+ it "does not raise an error on an inexistant instance" do
74
+ lambda { RhnSatellite::Connection::Handler.reset_instance(:blablablabla) }.should_not raise_error
75
+ end
76
+ end
77
+
78
+ describe ".reset_all" do
79
+ it "resets all connections" do
80
+ a = RhnSatellite::Connection::Handler.instance_for(:cache_reset)
81
+ RhnSatellite::Connection::Handler.send(:instances).should_not be_empty
82
+ RhnSatellite::Connection::Handler.reset_all
83
+ RhnSatellite::Connection::Handler.send(:instances).should be_empty
84
+ end
85
+ end
86
+
87
+ describe "#connect" do
88
+ before :each do
89
+ RhnSatellite::Connection::Handler.default_hostname = 'connecttest'
90
+ end
91
+
92
+ it "creates a new connection with the passed timeout" do
93
+ RhnSatellite::Connection::Handler.default_timeout = 60
94
+ XMLRPC::Client.expects(:new2).with('https://connecttest/rpc/api',nil,60)
95
+ a = RhnSatellite::Connection::Handler.instance_for(:connect)
96
+ a.connect
97
+ end
98
+ end
99
+
100
+ describe "#disconnect" do
101
+ it "disconnects" do
102
+ a = RhnSatellite::Connection::Handler.instance_for(:disconnect)
103
+ a.connect
104
+ a.connected?.should eql(true)
105
+ a.disconnect
106
+ a.connected?.should eql(false)
107
+ end
108
+ end
109
+
110
+ describe "#make_call" do
111
+ context "without a connection"
112
+ it "raises an exception" do
113
+ a = RhnSatellite::Connection::Handler.instance_for(:make_call1)
114
+ a.connected?.should be(false)
115
+ lambda { a.make_call(1,2) }.should raise_error
116
+ end
117
+ end
118
+
119
+ context "with a connection" do
120
+ it "calls out to xmlrpc" do
121
+ xmlrpc = Object.new
122
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
123
+ xmlrpc.expects(:call).with(1,2).returns "foo"
124
+ a = RhnSatellite::Connection::Handler.instance_for(:make_call2)
125
+ a.connect
126
+ a.make_call(1,2).should eql('foo')
127
+ end
128
+ end
129
+
130
+ describe "#login" do
131
+ it "connects with username and password" do
132
+ a = RhnSatellite::Connection::Handler.instance_for(:login,'blub','user1','password')
133
+ xmlrpc = Object.new
134
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
135
+ xmlrpc.expects(:call).with('auth.login','user1','password').returns "some_token"
136
+ a.connect
137
+ a.login
138
+ end
139
+
140
+ it "connects with a duration" do
141
+ a = RhnSatellite::Connection::Handler.instance_for(:login2,'blub','user1','password')
142
+ xmlrpc = Object.new
143
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
144
+ xmlrpc.expects(:call).with('auth.login','user1','password',10).returns "some_token2"
145
+ a.connect
146
+ a.login(10)
147
+ end
148
+
149
+ it "does not call login again if we are logged in" do
150
+ a = RhnSatellite::Connection::Handler.instance_for(:login3,'blub','user1','password')
151
+ xmlrpc = Object.new
152
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
153
+ xmlrpc.expects(:call).with('auth.login','user1','password').returns "some_token3"
154
+ a.connect
155
+ a.login.should(eql("some_token3"))
156
+ a.login.should(eql("some_token3"))
157
+ end
158
+ end
159
+
160
+ describe "#logout" do
161
+ it "calls logout and clears the auth_token" do
162
+ a = RhnSatellite::Connection::Handler.instance_for(:logout,'blub','user1','password')
163
+ xmlrpc = Object.new
164
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
165
+ xmlrpc.expects(:call).with('auth.login','user1','password').returns "some_token4"
166
+ xmlrpc.expects(:call).with('auth.logout','some_token4')
167
+ a.connect
168
+ a.login.should(eql("some_token4"))
169
+ a.logout.should(eql(true))
170
+ a.instance_variable_get("@auth_token").should be_nil
171
+ end
172
+
173
+ it "should not logout if we're not logged in" do
174
+ a = RhnSatellite::Connection::Handler.instance_for(:logout,'blub','user1','password')
175
+ xmlrpc = Object.new
176
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
177
+ xmlrpc.expects(:call).with('auth.logout','some_token4').never
178
+ a.connect
179
+ a.logout.should(eql(true))
180
+ a.instance_variable_get("@auth_token").should be_nil
181
+ end
182
+ end
183
+
184
+ describe "#in_transaction" do
185
+ context "with login" do
186
+ it "logs in and out" do
187
+ a = RhnSatellite::Connection::Handler.instance_for(:logout,'blub','user1','password')
188
+ xmlrpc = Object.new
189
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
190
+ a.expects(:login).once
191
+ a.expects(:logout).once
192
+
193
+ a.in_transaction(true){ "block" }.should eql("block")
194
+ end
195
+ it "passes the token to the block" do
196
+ a = RhnSatellite::Connection::Handler.instance_for(:logout,'blub','user1','password')
197
+ xmlrpc = Object.new
198
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
199
+ xmlrpc.expects(:call).with('auth.login','user1','password').returns "some_token5"
200
+ a.expects(:logout).once
201
+
202
+ a.in_transaction(true){|token| token.should eql("some_token5"); "block" }.should eql("block")
203
+ end
204
+ end
205
+ context "without login" do
206
+ it "does not log in and out" do
207
+ a = RhnSatellite::Connection::Handler.instance_for(:logout,'blub','user1','password')
208
+ xmlrpc = Object.new
209
+ XMLRPC::Client.expects(:new2).returns(xmlrpc)
210
+ a.expects(:login).never
211
+ a.expects(:logout).never
212
+
213
+ a.in_transaction{ "block" }.should eql("block")
214
+ end
215
+ end
216
+ end
217
+ describe "#default_call" do
218
+ it "delegates everything to a logged in transaction" do
219
+ a = RhnSatellite::Connection::Handler.instance_for(:logout,'blub','user1','password')
220
+ a.stubs(:make_call).with('auth.login','user1','password').returns "some_token5"
221
+ a.expects(:logout).twice
222
+ a.expects(:make_call).with('some_method','some_token5','arg1','arg2').returns("result")
223
+ a.expects(:make_call).with('some_method2','some_token5').returns("result2")
224
+
225
+ a.default_call('some_method','arg1','arg2').should eql('result')
226
+ a.default_call('some_method2').should eql('result2')
227
+ end
228
+ end
229
+ end