ivanoats-whm_xml 0.3.0 → 0.3.1
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.
- data/lib/whm.rb +6 -4
- data/lib/whm/account.rb +64 -0
- data/spec/account_spec.rb +111 -0
- metadata +4 -2
data/lib/whm.rb
CHANGED
@@ -7,10 +7,12 @@ require 'active_support' # For stringifying keys, etc.
|
|
7
7
|
require 'parameters' # For parameter requirements in methods
|
8
8
|
require 'validatable' # For object validation
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
require '
|
10
|
+
WHM_DIRECTORY = File.join(File.dirname(__FILE__),'whm')
|
11
|
+
|
12
|
+
require File.join(WHM_DIRECTORY,'exceptions')
|
13
|
+
require File.join(WHM_DIRECTORY,'server')
|
14
|
+
require File.join(WHM_DIRECTORY,'account')
|
13
15
|
|
14
16
|
module Whm
|
15
|
-
VERSION = '0.3.
|
17
|
+
VERSION = '0.3.1'
|
16
18
|
end
|
data/lib/whm/account.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
module Whm
|
2
|
+
class Account < Server #:nodoc:
|
3
|
+
include Parameters, Validatable
|
4
|
+
|
5
|
+
validates_presence_of :username, :domain, :groups => :creation
|
6
|
+
validates_format_of :savepkg, :with => /(1|0)/, :message => "must be 1 or 0", :groups => :creation
|
7
|
+
|
8
|
+
attr_accessor :server
|
9
|
+
attr_accessor :attributes
|
10
|
+
attr_accessor :writable_attributes
|
11
|
+
|
12
|
+
|
13
|
+
@@default_attributes = {}
|
14
|
+
@@writable_attributes = %w(username domain plan pkgname savepkg featurelist quota password ip cgi frontpage hasshell contactemail cpmod maxftp maxsql maxpop maxlst maxsub maxpark maxaddon bwlimit customip language useregns hasuseregns reseller)
|
15
|
+
@@readonly_attributes = %w(disklimit diskused email ip owner partition plan startdate suspended suspendreason theme unix_startdate user)
|
16
|
+
|
17
|
+
def initialize(attributes = {})
|
18
|
+
self.attributes = attributes
|
19
|
+
self.writable_attributes = {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def user
|
23
|
+
self.attributes['user']
|
24
|
+
end
|
25
|
+
alias :name :user
|
26
|
+
|
27
|
+
(@@readonly_attributes).each do |attribute|
|
28
|
+
define_method attribute do
|
29
|
+
self.attributes[attribute.to_s]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
(@@writable_attributes).each do |attribute|
|
34
|
+
define_method attribute do
|
35
|
+
self.writable_attributes[attribute.to_s] || self.attributes[attribute.to_s]
|
36
|
+
end
|
37
|
+
define_method "#{attribute}=" do |*parameters|
|
38
|
+
raise ArgumentError, "expected 1 parameter" unless parameters.length == 1
|
39
|
+
self.writable_attributes[attribute.to_s] = parameters.first
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def password=(password)
|
44
|
+
server.change_account_password(:user => user, :pass => password)
|
45
|
+
end
|
46
|
+
|
47
|
+
def suspend!( reason = '')
|
48
|
+
server.suspend_account(:user => user, :reason => reason)
|
49
|
+
end
|
50
|
+
|
51
|
+
def unsuspend!
|
52
|
+
server.unsuspend_account(:user => user)
|
53
|
+
end
|
54
|
+
|
55
|
+
def terminate!( keepdns = "n")
|
56
|
+
server.terminate_account(:user => user,:keepdns => keepdns)
|
57
|
+
end
|
58
|
+
|
59
|
+
def package=( new_package)
|
60
|
+
server.change_package(:user => user, :pkg => new_package)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
require 'lib/whm'
|
3
|
+
require 'pp'
|
4
|
+
|
5
|
+
describe "A Whm Account that doesn't exist" do
|
6
|
+
|
7
|
+
before do
|
8
|
+
@server = Whm::Server.new(
|
9
|
+
:username => "username",
|
10
|
+
:password => "password",
|
11
|
+
:host => "dedicated.server.com"
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should throw an exception when an account doesn't exist" do
|
16
|
+
data = open(File.dirname(__FILE__) + '/fixtures/error2.xml').read
|
17
|
+
|
18
|
+
@server.expects(:get_xml).with(:url => "accountsummary", :params => {:user=>"doesntexist"}).returns(XmlSimple.xml_in(data, { 'ForceArray' => false }))
|
19
|
+
lambda { @server.account("doesntexist")}.should raise_error( Whm::CommandFailedError)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "Whm Accounts" do
|
24
|
+
before do
|
25
|
+
@server = Whm::Server.new(
|
26
|
+
:username => "username",
|
27
|
+
:password => "password",
|
28
|
+
:host => "dedicated.server.com"
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should find all accounts" do
|
33
|
+
data = open(File.dirname(__FILE__) + '/fixtures/listaccts.xml').read
|
34
|
+
@server.expects(:get_xml).returns(XmlSimple.xml_in(data, { 'ForceArray' => false }))
|
35
|
+
|
36
|
+
@server.accounts.length.should == 3
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should find all accounts when there is only one account" do
|
40
|
+
data = open(File.dirname(__FILE__) + '/fixtures/listaccts_single.xml').read
|
41
|
+
@server.expects(:get_xml).returns(XmlSimple.xml_in(data, { 'ForceArray' => false }))
|
42
|
+
@server.accounts.length.should == 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should find an account by name" do
|
46
|
+
data = open(File.dirname(__FILE__) + '/fixtures/accountsummary.xml').read
|
47
|
+
@server.expects(:get_xml).with(:url => "accountsummary",:params => {:user=>"magic"}).returns(XmlSimple.xml_in(data, { 'ForceArray' => false }))
|
48
|
+
@server.account("magic").should_not be_nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "A Whm Account" do
|
53
|
+
|
54
|
+
before do
|
55
|
+
@server = Whm::Server.new(
|
56
|
+
:username => "username",
|
57
|
+
:password => "password",
|
58
|
+
:host => "dedicated.server.com"
|
59
|
+
)
|
60
|
+
data = open(File.dirname(__FILE__) + '/fixtures/accountsummary.xml').read
|
61
|
+
@server.expects(:get_xml).with(:url => "accountsummary", :params => {:user=>"magic"}).returns(XmlSimple.xml_in(data,{ 'ForceArray' => false }))
|
62
|
+
@account = @server.account("magic")
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
it "should load account attributes" do
|
67
|
+
@account.attributes['user'].should == "magic"
|
68
|
+
@account.attributes['domain'].should == "magic.example.com"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should have a name" do
|
72
|
+
@account.name.should == "magic"
|
73
|
+
@account.user.should == "magic"
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should change the password" do
|
77
|
+
@server.expects(:change_account_password).returns("new_password")
|
78
|
+
@account.password=("new_password").should == "new_password"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should suspend an account" do
|
82
|
+
@server.expects(:suspend_account).returns("ok")
|
83
|
+
@account.suspend!.should == "ok"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should unsuspend an account" do
|
87
|
+
@server.expects(:unsuspend_account).returns("ok")
|
88
|
+
@account.unsuspend!.should == "ok"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should terminate an account" do
|
92
|
+
@server.expects(:terminate_account).returns("ok")
|
93
|
+
@account.terminate!.should == "ok"
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should change the package on an account" do
|
97
|
+
@server.expects(:change_package).returns("ok")
|
98
|
+
|
99
|
+
@account.package=("new_package").should == "new_package"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should read an attribute" do
|
103
|
+
@account.domain.should == 'magic.example.com'
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should write an attribute" do
|
107
|
+
@account.username = 'newname'
|
108
|
+
@account.username.should == 'newname'
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ivanoats-whm_xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Storck
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2009-04-
|
14
|
+
date: 2009-04-30 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -66,9 +66,11 @@ files:
|
|
66
66
|
- Rakefile
|
67
67
|
- README.rdoc
|
68
68
|
- lib/parameters.rb
|
69
|
+
- lib/whm/account.rb
|
69
70
|
- lib/whm/exceptions.rb
|
70
71
|
- lib/whm/server.rb
|
71
72
|
- lib/whm.rb
|
73
|
+
- spec/account_spec.rb
|
72
74
|
- spec/server_spec.rb
|
73
75
|
- spec/spec_helper.rb
|
74
76
|
has_rdoc: true
|