lumberg 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +98 -0
- data/LICENSE +20 -0
- data/README.md +178 -0
- data/Rakefile +49 -0
- data/lib/cacert.pem +3910 -0
- data/lib/lumberg.rb +23 -0
- data/lib/lumberg/exceptions.rb +6 -0
- data/lib/lumberg/version.rb +3 -0
- data/lib/lumberg/whm.rb +70 -0
- data/lib/lumberg/whm/account.rb +329 -0
- data/lib/lumberg/whm/args.rb +113 -0
- data/lib/lumberg/whm/base.rb +28 -0
- data/lib/lumberg/whm/dns.rb +205 -0
- data/lib/lumberg/whm/reseller.rb +268 -0
- data/lib/lumberg/whm/server.rb +290 -0
- data/lib/net_http_hacked.rb +42 -0
- data/lumberg.gemspec +28 -0
- data/spec/lumberg_spec.rb +9 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/vcr_cassettes/whm/account/accountsummary.yml +43 -0
- data/spec/vcr_cassettes/whm/account/changepackage.yml +64 -0
- data/spec/vcr_cassettes/whm/account/createacct.yml +43 -0
- data/spec/vcr_cassettes/whm/account/domainuserdata.yml +43 -0
- data/spec/vcr_cassettes/whm/account/editquota.yml +85 -0
- data/spec/vcr_cassettes/whm/account/limitbw.yml +85 -0
- data/spec/vcr_cassettes/whm/account/listaccts.yml +147 -0
- data/spec/vcr_cassettes/whm/account/listsuspended.yml +43 -0
- data/spec/vcr_cassettes/whm/account/modifyacct.yml +63 -0
- data/spec/vcr_cassettes/whm/account/myprivs.yml +43 -0
- data/spec/vcr_cassettes/whm/account/passwd.yml +43 -0
- data/spec/vcr_cassettes/whm/account/removeacct.yml +85 -0
- data/spec/vcr_cassettes/whm/account/restoreaccount.yml +198 -0
- data/spec/vcr_cassettes/whm/account/setsiteip.yml +190 -0
- data/spec/vcr_cassettes/whm/account/suspend.yml +64 -0
- data/spec/vcr_cassettes/whm/account/unsuspend.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/adddns.yml +64 -0
- data/spec/vcr_cassettes/whm/dns/addzonerecord.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/dumpzone.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/editzonerecord.yml +64 -0
- data/spec/vcr_cassettes/whm/dns/getzonerecord.yml +64 -0
- data/spec/vcr_cassettes/whm/dns/killdns.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/listmxs.yml +22 -0
- data/spec/vcr_cassettes/whm/dns/listzones.yml +22 -0
- data/spec/vcr_cassettes/whm/dns/lookupnsip.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/removezonerecord.yml +64 -0
- data/spec/vcr_cassettes/whm/dns/resetzone.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/resolvedomainname.yml +43 -0
- data/spec/vcr_cassettes/whm/dns/savemxs.yml +22 -0
- data/spec/vcr_cassettes/whm/reseller/acctcounts.yml +43 -0
- data/spec/vcr_cassettes/whm/reseller/listacls.yml +22 -0
- data/spec/vcr_cassettes/whm/reseller/listresellers.yml +22 -0
- data/spec/vcr_cassettes/whm/reseller/resellerstats.yml +43 -0
- data/spec/vcr_cassettes/whm/reseller/saveacllist.yml +85 -0
- data/spec/vcr_cassettes/whm/reseller/setacls.yml +43 -0
- data/spec/vcr_cassettes/whm/reseller/setresellerips.yml +42 -0
- data/spec/vcr_cassettes/whm/reseller/setresellerlimits.yml +43 -0
- data/spec/vcr_cassettes/whm/reseller/setresellermainip.yml +64 -0
- data/spec/vcr_cassettes/whm/reseller/setresellernameservers.yml +64 -0
- data/spec/vcr_cassettes/whm/reseller/setresellerpackagelimit.yml +64 -0
- data/spec/vcr_cassettes/whm/reseller/setupreseller.yml +43 -0
- data/spec/vcr_cassettes/whm/reseller/suspendreseller.yml +64 -0
- data/spec/vcr_cassettes/whm/reseller/terminatereseller.yml +64 -0
- data/spec/vcr_cassettes/whm/reseller/unsetupreseller.yml +43 -0
- data/spec/vcr_cassettes/whm/reseller/unsuspendreseller.yml +43 -0
- data/spec/vcr_cassettes/whm/server/applist.yml +22 -0
- data/spec/vcr_cassettes/whm/server/gethostname.yml +22 -0
- data/spec/vcr_cassettes/whm/server/getlanglist.yml +22 -0
- data/spec/vcr_cassettes/whm/server/loadavg.yml +28 -0
- data/spec/vcr_cassettes/whm/server/my_function.yml +64 -0
- data/spec/vcr_cassettes/whm/server/response_type.yml +85 -0
- data/spec/vcr_cassettes/whm/server/systemloadavg.yml +43 -0
- data/spec/vcr_cassettes/whm/server/version.yml +22 -0
- data/spec/whm/account_spec.rb +577 -0
- data/spec/whm/args_spec.rb +179 -0
- data/spec/whm/base_spec.rb +28 -0
- data/spec/whm/dns_spec.rb +352 -0
- data/spec/whm/reseller_spec.rb +359 -0
- data/spec/whm/server_spec.rb +288 -0
- data/spec/whm/whm_spec.rb +41 -0
- metadata +265 -0
@@ -0,0 +1,359 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Lumberg
|
4
|
+
describe Whm::Reseller do
|
5
|
+
before(:each) do
|
6
|
+
@login = { :host => @whm_host, :hash => @whm_hash }
|
7
|
+
@whm = Whm::Server.new(@login.dup)
|
8
|
+
@reseller = Whm::Reseller.new(:server => @whm)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#setup_reseller" do
|
12
|
+
use_vcr_cassette "whm/reseller/setupreseller"
|
13
|
+
|
14
|
+
it "requires username" do
|
15
|
+
requires_attr('username') { @reseller.create }
|
16
|
+
end
|
17
|
+
|
18
|
+
it "fails when the user doesn't exist" do
|
19
|
+
result = @reseller.create(:username => 'invalid')
|
20
|
+
result[:success].should be_false
|
21
|
+
result[:message].should match(/does not exist/i)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "creates a reseller" do
|
25
|
+
result = @reseller.create(:username => 'bob')
|
26
|
+
result[:success].should be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "accepts makeowner option" do
|
30
|
+
@reseller.server.should_receive(:perform_request).with('setupreseller', hash_including(:makeowner => true))
|
31
|
+
@reseller.create(:username => 'bob', :makeowner => true)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#list" do
|
36
|
+
use_vcr_cassette "whm/reseller/listresellers"
|
37
|
+
|
38
|
+
it "lists all resellers" do
|
39
|
+
result = @reseller.list
|
40
|
+
result[:success].should be_true
|
41
|
+
result[:params][:resellers].should have(2).resellers
|
42
|
+
result[:params][:resellers].should include('bob', 'ted')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#setresellerips" do
|
47
|
+
use_vcr_cassette "whm/reseller/setresellerips"
|
48
|
+
|
49
|
+
it "requires a username" do
|
50
|
+
requires_attr('username') { @reseller.add_ips }
|
51
|
+
end
|
52
|
+
|
53
|
+
it "adds the ip address to the reseller account" do
|
54
|
+
result = @reseller.add_ips(:username => 'bob', :ips =>'192.1.2.3')
|
55
|
+
result[:message].should match(/Successfully configured IP addresses delegation to reseller/i)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns an error for invalid ip addresses" do
|
59
|
+
result = @reseller.add_ips(:username => 'bob', :ips =>'1.2.3.4')
|
60
|
+
result[:message].should match(/The list of supplied IP addresses contains inappropriate values/i)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "#setresellerlimits" do
|
65
|
+
use_vcr_cassette "whm/reseller/setresellerlimits"
|
66
|
+
|
67
|
+
it "requires a username" do
|
68
|
+
requires_attr('username') { @reseller.set_limits }
|
69
|
+
end
|
70
|
+
|
71
|
+
it "sets the limits" do
|
72
|
+
result = @reseller.set_limits(:username => 'bob', :diskspace_limit => 1024, :enable_overselling => true,
|
73
|
+
:enable_overselling_diskspace => true)
|
74
|
+
result[:success].should be_true
|
75
|
+
result[:message].should match(/Successfully set reseller account .*limits/i)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#terminate" do
|
80
|
+
use_vcr_cassette "whm/reseller/terminatereseller"
|
81
|
+
|
82
|
+
it "requires a reseller" do
|
83
|
+
requires_attr('reseller') { @reseller.terminate }
|
84
|
+
end
|
85
|
+
|
86
|
+
it "terminates the reseller" do
|
87
|
+
result = @reseller.terminate(:reseller => 'terminat')
|
88
|
+
result[:success].should be_true
|
89
|
+
result[:message].should match(/account terminations complete/i)
|
90
|
+
result[:params][:accts].should be_empty
|
91
|
+
end
|
92
|
+
|
93
|
+
it "terminates the main account" do
|
94
|
+
result = @reseller.terminate(:reseller => 'terminat', :terminatereseller => true)
|
95
|
+
result[:success].should be_true
|
96
|
+
result[:message].should match(/account terminations complete/i)
|
97
|
+
result[:params][:accts][:terminat][:rawout].should match(/Account Removal Complete/i)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "errors on non-existaet user" do
|
101
|
+
result = @reseller.terminate(:reseller => 'what')
|
102
|
+
result[:success].should be_false
|
103
|
+
result[:message].should match(/does not exist/i)
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "#setresellermainip" do
|
109
|
+
use_vcr_cassette "whm/reseller/setresellermainip"
|
110
|
+
|
111
|
+
it "requires a username" do
|
112
|
+
requires_attr('username') { @reseller.set_main_ip(:ip => '192.1.2.3') }
|
113
|
+
end
|
114
|
+
|
115
|
+
it "requires an ip" do
|
116
|
+
requires_attr('ip') { @reseller.set_main_ip(:username => 'bob') }
|
117
|
+
end
|
118
|
+
|
119
|
+
it "sets the main ip" do
|
120
|
+
result = @reseller.set_main_ip(:username => 'bob', :ip => '192.1.2.3')
|
121
|
+
result[:success].should be_true
|
122
|
+
result[:message].should match(/Successfully set main IP address of the reseller/i)
|
123
|
+
end
|
124
|
+
|
125
|
+
it "returns an error when the IP is invalid" do
|
126
|
+
result = @reseller.set_main_ip(:username => 'bob', :ip => '10')
|
127
|
+
result[:success].should be_false
|
128
|
+
result[:message].should match(/Supplied IP address is invalid/)
|
129
|
+
end
|
130
|
+
|
131
|
+
it "returns an error when the user is invalid" do
|
132
|
+
result = @reseller.set_main_ip(:username => 'notexists', :ip => '192.1.2.3')
|
133
|
+
result[:success].should be_false
|
134
|
+
result[:message].should match(/Specified user is not a reseller/i)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "#setresellerpackagelimit" do
|
139
|
+
use_vcr_cassette "whm/reseller/setresellerpackagelimit"
|
140
|
+
|
141
|
+
it "requires a username" do
|
142
|
+
requires_attr('username') { @reseller.set_package_limit(:no_limit => true, :package => 'gold') }
|
143
|
+
end
|
144
|
+
|
145
|
+
it "requires no_limit" do
|
146
|
+
requires_attr('no_limit') { @reseller.set_package_limit(:username => 'bob', :package => 'gold') }
|
147
|
+
end
|
148
|
+
|
149
|
+
it "requires package" do
|
150
|
+
requires_attr('package') { @reseller.set_package_limit(:username => 'bob', :no_limit => true) }
|
151
|
+
end
|
152
|
+
|
153
|
+
it "sets the package limit" do
|
154
|
+
result = @reseller.set_package_limit(:username => 'bob', :no_limit => false, :package => 'gold', :allowed => true)
|
155
|
+
result[:success].should be_true
|
156
|
+
result[:message].should match(/Successfully set reseller package limit/i)
|
157
|
+
end
|
158
|
+
|
159
|
+
it "sets no limit" do
|
160
|
+
result = @reseller.set_package_limit(:username => 'bob', :no_limit => true, :package => 'gold')
|
161
|
+
result[:success].should be_true
|
162
|
+
result[:message].should match(/Successfully set reseller package limit/i)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe "#suspendreseller" do
|
167
|
+
use_vcr_cassette "whm/reseller/suspendreseller"
|
168
|
+
|
169
|
+
it "requires a username" do
|
170
|
+
requires_attr('username') { @reseller.suspend }
|
171
|
+
end
|
172
|
+
|
173
|
+
it "suspends the reseller" do
|
174
|
+
result = @reseller.suspend(:username => 'bob')
|
175
|
+
result[:success].should be_true
|
176
|
+
result[:message].should match(/Finished suspending reseller/i)
|
177
|
+
end
|
178
|
+
|
179
|
+
it "can take a reason" do
|
180
|
+
result = @reseller.suspend(:username => 'bob', :reason => 'some reason')
|
181
|
+
result[:success].should be_true
|
182
|
+
result[:message].should match(/Finished suspending reseller/i)
|
183
|
+
end
|
184
|
+
|
185
|
+
it "returns an error when the user is invalid" do
|
186
|
+
result = @reseller.suspend(:username => 'notexists')
|
187
|
+
result[:success].should be_false
|
188
|
+
result[:message].should match(/Specified user is not a reseller/i)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
describe "#unsuspendreseller" do
|
193
|
+
use_vcr_cassette "whm/reseller/unsuspendreseller"
|
194
|
+
|
195
|
+
it "requires a username" do
|
196
|
+
requires_attr('username') { @reseller.unsuspend }
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should unsuspend the user" do
|
200
|
+
result = @reseller.unsuspend(:username => 'bob')
|
201
|
+
result[:success].should be_true
|
202
|
+
result[:message].should match(/Finished unsuspending reseller/i)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "return an error when the user is invalid" do
|
206
|
+
result = @reseller.unsuspend(:username => 'notexists')
|
207
|
+
result[:success].should be_false
|
208
|
+
result[:message].should match(/Specified user is not a reseller/i)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
describe "#acctcounts" do
|
213
|
+
use_vcr_cassette "whm/reseller/acctcounts"
|
214
|
+
|
215
|
+
it "requires a username" do
|
216
|
+
requires_attr('username') { @reseller.account_counts }
|
217
|
+
end
|
218
|
+
|
219
|
+
it "returns the account counts" do
|
220
|
+
result = @reseller.account_counts(:username => 'bob')
|
221
|
+
result[:success].should be_true
|
222
|
+
result[:message].should match(/Obtained reseller account counts/i)
|
223
|
+
result[:params][:account].should == "bob"
|
224
|
+
result[:params][:suspended].to_i.should == 0
|
225
|
+
result[:params][:active].to_i.should == 0
|
226
|
+
result[:params][:limit].should == ""
|
227
|
+
end
|
228
|
+
|
229
|
+
it "returns an error when the user is invalid" do
|
230
|
+
result = @reseller.account_counts(:username => 'notexists')
|
231
|
+
result[:success].should be_false
|
232
|
+
result[:message].should match(/Specified user is not a reseller/i)
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
describe "#setresellernameservers" do
|
237
|
+
use_vcr_cassette "whm/reseller/setresellernameservers"
|
238
|
+
|
239
|
+
it "requires a username" do
|
240
|
+
requires_attr('username') { @reseller.set_nameservers }
|
241
|
+
end
|
242
|
+
|
243
|
+
it "sets the default nameservers" do
|
244
|
+
result = @reseller.set_nameservers(:username => 'bob')
|
245
|
+
result[:success].should be_true
|
246
|
+
result[:message].should match(/Set resellers nameservers/i)
|
247
|
+
end
|
248
|
+
|
249
|
+
it "sets the specified nameservers" do
|
250
|
+
result = @reseller.set_nameservers(:username => 'bob', :nameservers => 'ns1.example.com')
|
251
|
+
result[:success].should be_true
|
252
|
+
result[:message].should match(/Set resellers nameservers/i)
|
253
|
+
end
|
254
|
+
|
255
|
+
it "returns an error for an invalid username" do
|
256
|
+
result = @reseller.account_counts(:username => 'notexists')
|
257
|
+
result[:success].should be_false
|
258
|
+
result[:message].should match(/Specified user is not a reseller/i)
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
describe "#resellerstats" do
|
263
|
+
use_vcr_cassette "whm/reseller/resellerstats"
|
264
|
+
|
265
|
+
it "requires a reseller" do
|
266
|
+
requires_attr('reseller') { @reseller.stats }
|
267
|
+
end
|
268
|
+
|
269
|
+
it "returns the stats of the reseller" do
|
270
|
+
result = @reseller.stats(:reseller => 'bob')
|
271
|
+
result[:success].should be_true
|
272
|
+
result[:message].should match(/Fetched Reseller Data OK/i)
|
273
|
+
result[:params][:diskquota].to_i.should == 0
|
274
|
+
result[:params][:diskoverselling].to_i.should == 1
|
275
|
+
result[:params][:bandwidthlimit].to_i.should == 0
|
276
|
+
end
|
277
|
+
|
278
|
+
it "returns an error for an invalid reseller" do
|
279
|
+
result = @reseller.stats(:reseller => 'notexists')
|
280
|
+
result[:success].should be_false
|
281
|
+
result[:message].should match(/Reseller Does Not Exist/i)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
describe "#listacls" do
|
286
|
+
use_vcr_cassette "whm/reseller/listacls"
|
287
|
+
|
288
|
+
it "lists the saved reseller ACL lists" do
|
289
|
+
result = @reseller.list_acls
|
290
|
+
result[:params].size.should == 1
|
291
|
+
result[:params][:testacllist][:add_pkg].to_i.should == 1
|
292
|
+
result[:params][:testacllist][:add_pkg_ip].to_i.should == 1
|
293
|
+
result[:params][:testacllist][:edit_mx].to_i.should == 0
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
describe "#saveacllist" do
|
298
|
+
use_vcr_cassette "whm/reseller/saveacllist"
|
299
|
+
|
300
|
+
it "requires an acllist name" do
|
301
|
+
requires_attr('acllist') { @reseller.save_acl_list }
|
302
|
+
end
|
303
|
+
|
304
|
+
it "creates a new reseller ACL list" do
|
305
|
+
result = @reseller.save_acl_list(:acllist => 'testacllist')
|
306
|
+
result[:success].should be_true
|
307
|
+
result[:message].should match(/ACL List testacllist saved/i)
|
308
|
+
end
|
309
|
+
|
310
|
+
it "creates a new reseller ACL list with optional settings" do
|
311
|
+
result = @reseller.save_acl_list(:acllist => 'testacllist',
|
312
|
+
"acl-ssl".to_sym => true,
|
313
|
+
"acl-add-pkg".to_sym => true,
|
314
|
+
"acl-stats".to_sym => true)
|
315
|
+
result[:success].should be_true
|
316
|
+
result[:message].should match(/ACL List testacllist saved/i)
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
describe "#setacls" do
|
321
|
+
use_vcr_cassette "whm/reseller/setacls"
|
322
|
+
|
323
|
+
it "requires a reseller" do
|
324
|
+
requires_attr('reseller') { @reseller.set_acls }
|
325
|
+
end
|
326
|
+
|
327
|
+
it "sets the ACL for the reseller" do
|
328
|
+
result = @reseller.set_acls(:reseller => 'bob', :acllist => 'testacllist')
|
329
|
+
result[:success].should be_true
|
330
|
+
result[:message].should match(/Reseller Acls Saved/i)
|
331
|
+
end
|
332
|
+
|
333
|
+
it "returns an error for an invalid reseller" do
|
334
|
+
result = @reseller.set_acls(:reseller => 'notexists')
|
335
|
+
result[:success].should be_false
|
336
|
+
result[:message].should match(/Not a reseller/i)
|
337
|
+
end
|
338
|
+
end
|
339
|
+
|
340
|
+
describe "#unsetupreseller" do
|
341
|
+
use_vcr_cassette "whm/reseller/unsetupreseller"
|
342
|
+
|
343
|
+
it "requires a username" do
|
344
|
+
requires_attr('username') { @reseller.unsetup }
|
345
|
+
end
|
346
|
+
|
347
|
+
it "removes the reseller status from the user" do
|
348
|
+
result = @reseller.unsetup(:username => 'bob')
|
349
|
+
result[:success].should be_true
|
350
|
+
end
|
351
|
+
|
352
|
+
it "returns an error if the user does not exist" do
|
353
|
+
result = @reseller.unsetup(:username => 'notexists')
|
354
|
+
result[:success].should be_false
|
355
|
+
result[:message].should match(/called for a user that does not exist/i)
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
end
|
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Requests will need an "Authorization" header with
|
4
|
+
# WHM username:hash"
|
5
|
+
module Lumberg
|
6
|
+
describe Whm::Server do
|
7
|
+
before(:each) do
|
8
|
+
@login = { :host => @whm_host, :hash => @whm_hash }
|
9
|
+
@whm = Whm::Server.new(@login.dup)
|
10
|
+
@url_base = "https://myhost.com:2087/json-api"
|
11
|
+
end
|
12
|
+
|
13
|
+
context "Setting up the server host, username, url, and hash" do
|
14
|
+
it "should setup host and hash" do
|
15
|
+
@whm.hash.should == @login[:hash]
|
16
|
+
@whm.host.should == @login[:host]
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should set the url" do
|
20
|
+
@whm.base_url.should == "https://#{@login[:host]}:2087/json-api/"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should default to 'root' as the username" do
|
24
|
+
@whm.user.should == 'root'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should allow setting of the username" do
|
28
|
+
@whm = Whm::Server.new(@login.merge(:user => 'bob'))
|
29
|
+
@whm.user.should == 'bob'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#format_url" do
|
34
|
+
it "converts the host into an SSL URL by default" do
|
35
|
+
@whm.send(:format_url).should == "https://myhost.com:2087/json-api/"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "converts the host into an SSL URL when asked" do
|
39
|
+
@whm = Whm::Server.new(@login.dup.merge(:ssl => true))
|
40
|
+
@whm.send(:format_url).should == "https://myhost.com:2087/json-api/"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "converts the host into a non SSL URL when asked" do
|
44
|
+
@whm = Whm::Server.new(@login.dup.merge(:ssl => false))
|
45
|
+
@whm.send(:format_url).should == "http://myhost.com:2086/json-api/"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#format_hash" do
|
50
|
+
it "raises an error if hash is not a string" do
|
51
|
+
expect{ Whm::Server.new(:host => @whm_host, :hash => nil) }.to
|
52
|
+
raise_error(Lumberg::WhmArgumentError, "Missing WHM hash")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "removes \\n's from the hash" do
|
56
|
+
hash = "my\nhash\n\n\n\n"
|
57
|
+
@whm = Whm::Server.new(:host => @whm_host, :hash => hash)
|
58
|
+
@whm.hash.should == 'myhash'
|
59
|
+
end
|
60
|
+
|
61
|
+
it "removes whitespace from the hash" do
|
62
|
+
hash = " my hash "
|
63
|
+
@whm = Whm::Server.new(:host => @whm_host, :hash => hash)
|
64
|
+
@whm.hash.should == 'myhash'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#perform_request" do
|
69
|
+
# These tests are skipped when running against
|
70
|
+
# a real WHM server
|
71
|
+
unless live_test?
|
72
|
+
describe "my_function" do
|
73
|
+
use_vcr_cassette "whm/server/my_function"
|
74
|
+
|
75
|
+
it "calls the proper URL" do
|
76
|
+
JSON.should_receive(:parse).with("[]").and_return([])
|
77
|
+
@whm.perform_request('my_function')
|
78
|
+
@whm.function.should == 'my_function'
|
79
|
+
@whm.params.should be_empty
|
80
|
+
@whm.raw_response.should be_a(Net::HTTPOK)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "calls the proper URL and arguments" do
|
84
|
+
JSON.should_receive(:parse).with("[]").and_return([])
|
85
|
+
@whm.perform_request('my_function', :arg1 => 1, :arg2 => 'test')
|
86
|
+
@whm.function.should == 'my_function'
|
87
|
+
@whm.params.should == "arg1=1&arg2=test"
|
88
|
+
@whm.raw_response.should be_a(Net::HTTPOK)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "changes params to booleans when given a block" do
|
92
|
+
req = @whm.perform_request('my_function', :block => 1) do |p|
|
93
|
+
p.boolean_params = :true, :false
|
94
|
+
end
|
95
|
+
|
96
|
+
@whm.boolean_params.should include(:true, :false)
|
97
|
+
req[:params].should include(:true => true, :false => false, :other => 2)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "@ssl_verify" do
|
103
|
+
it "does not verify SSL certs for HTTP requests by default" do
|
104
|
+
@whm.ssl_verify.should be(false)
|
105
|
+
end
|
106
|
+
|
107
|
+
it "verifies SSL certs for HTTP requests when asked" do
|
108
|
+
@whm.ssl_verify = true
|
109
|
+
@whm.ssl_verify.should be(true)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "does not verify SSL certs for HTTP requests when asked" do
|
113
|
+
@whm.ssl_verify = false
|
114
|
+
@whm.ssl_verify.should be(false)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context "calling applist" do
|
119
|
+
use_vcr_cassette "whm/server/applist"
|
120
|
+
|
121
|
+
it "sets a response message" do
|
122
|
+
@whm = Whm::Server.new(:host => @whm_host, :hash => @whm_hash)
|
123
|
+
@whm.perform_request('applist')
|
124
|
+
@whm.function.should == 'applist'
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#response_type" do
|
130
|
+
|
131
|
+
use_vcr_cassette "whm/server/response_type"
|
132
|
+
|
133
|
+
it "detects an action function" do
|
134
|
+
@whm.perform_request('testing')
|
135
|
+
@whm.send(:response_type).should == :action
|
136
|
+
end
|
137
|
+
|
138
|
+
it "detects an error function" do
|
139
|
+
@whm.perform_request('testing_error')
|
140
|
+
@whm.send(:response_type).should == :error
|
141
|
+
end
|
142
|
+
|
143
|
+
it "detects a query function" do
|
144
|
+
@whm.perform_request('testing_query')
|
145
|
+
@whm.send(:response_type).should == :query
|
146
|
+
end
|
147
|
+
|
148
|
+
it "detects an unknown function" do
|
149
|
+
@whm.perform_request('testing_unknown')
|
150
|
+
@whm.send(:response_type).should == :unknown
|
151
|
+
end
|
152
|
+
|
153
|
+
it "forces response type" do
|
154
|
+
@whm.force_response_type = :magic
|
155
|
+
@whm.send(:response_type).should == :magic
|
156
|
+
@whm.perform_request('testing')
|
157
|
+
end
|
158
|
+
|
159
|
+
it "resets response_type each request" do
|
160
|
+
@whm.force_response_type.should be_nil
|
161
|
+
@whm.force_response_type = :magic
|
162
|
+
@whm.send(:response_type).should == :magic
|
163
|
+
|
164
|
+
@whm.force_response_type = :magic
|
165
|
+
@whm.perform_request('testing')
|
166
|
+
@whm.force_response_type.should be_nil
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
it "returns true for a successful :action" do
|
171
|
+
@whm.perform_request('testing')
|
172
|
+
response = @whm.send(:format_response)
|
173
|
+
response[:success].should be(true)
|
174
|
+
end
|
175
|
+
|
176
|
+
it "returns true for a successful :query" do
|
177
|
+
@whm.perform_request('testing_query')
|
178
|
+
response = @whm.send(:format_response)
|
179
|
+
response[:success].should be(true)
|
180
|
+
response[:params].should have_key(:acct)
|
181
|
+
end
|
182
|
+
|
183
|
+
it "returns false on :error" do
|
184
|
+
@whm.perform_request('testing_error')
|
185
|
+
response = @whm.send(:format_response)
|
186
|
+
response[:success].should be(false)
|
187
|
+
response[:message].should match(/Unknown App Req/)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "returns false on :unknown" do
|
191
|
+
@whm.perform_request('testing_unknown')
|
192
|
+
response = @whm.send(:format_response)
|
193
|
+
response[:success].should be(false)
|
194
|
+
response[:message].should match(/Unknown error occurred .*wtf.*/)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
describe "#gethostname" do
|
199
|
+
use_vcr_cassette "whm/server/gethostname"
|
200
|
+
|
201
|
+
it "returns the hostname" do
|
202
|
+
result = @whm.get_hostname
|
203
|
+
result[:success].should be_true
|
204
|
+
result[:params][:hostname].should == "myhost.com"
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
describe "#version" do
|
209
|
+
use_vcr_cassette "whm/server/version"
|
210
|
+
|
211
|
+
it "returns the version of cPanel and WHM" do
|
212
|
+
result = @whm.version
|
213
|
+
result[:success].should be_true
|
214
|
+
result[:params][:version].should == "11.28.64"
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
describe "#loadavg" do
|
219
|
+
use_vcr_cassette "whm/server/loadavg"
|
220
|
+
|
221
|
+
it "returns the server's load average" do
|
222
|
+
result = @whm.load_average
|
223
|
+
result[:success].should be_true
|
224
|
+
result[:params].should include(:one, :five, :fifteen)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
describe "#systemloadavg" do
|
229
|
+
use_vcr_cassette "whm/server/systemloadavg"
|
230
|
+
|
231
|
+
it "returns the server's load average with metadata" do
|
232
|
+
result = @whm.system_load_average("api.version".to_sym => 1)
|
233
|
+
result[:params][:one].should == "0.00"
|
234
|
+
result[:params][:five].should == "0.04"
|
235
|
+
result[:params][:fifteen].should == "0.01"
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
describe "#getlanglist" do
|
240
|
+
use_vcr_cassette "whm/server/getlanglist"
|
241
|
+
|
242
|
+
it "returns the list of languages" do
|
243
|
+
result = @whm.languages
|
244
|
+
result[:params].size.to_i.should == 19
|
245
|
+
result[:params].should include "english"
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
describe "#account" do
|
250
|
+
it "has an account accessor" do
|
251
|
+
@whm.account.should be_an(Whm::Account)
|
252
|
+
end
|
253
|
+
|
254
|
+
it "returns the same thing twice" do
|
255
|
+
@whm.account.should be_a(Whm::Account)
|
256
|
+
@whm.account.should respond_to(:list)
|
257
|
+
|
258
|
+
@whm.account.should be_a(Whm::Account)
|
259
|
+
@whm.account.should respond_to(:list)
|
260
|
+
end
|
261
|
+
|
262
|
+
end
|
263
|
+
|
264
|
+
describe "#dns" do
|
265
|
+
it "has an dns accessor" do
|
266
|
+
@whm.dns.should be_an(Whm::Dns)
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
describe "#reseller" do
|
271
|
+
it "has an reseller accessor" do
|
272
|
+
@whm.reseller.should be_an(Whm::Reseller)
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
describe "#method_missing" do
|
277
|
+
it "caches @vars" do
|
278
|
+
Whm.should_receive(:const_get).once.and_return(Whm::Account)
|
279
|
+
@whm.account
|
280
|
+
@whm.account
|
281
|
+
end
|
282
|
+
|
283
|
+
it "raises to super" do
|
284
|
+
expect { @whm.asdf }.to raise_error(NoMethodError)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|