solusvm 0.10.1 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/README.markdown +75 -25
  2. data/bin/solusvm +3 -153
  3. data/lib/solusvm/base.rb +17 -10
  4. data/lib/solusvm/cli/base_cli.rb +47 -0
  5. data/lib/solusvm/cli/client_cli.rb +49 -0
  6. data/lib/solusvm/cli/general_cli.rb +28 -0
  7. data/lib/solusvm/cli/node_cli.rb +43 -0
  8. data/lib/solusvm/cli/reseller_cli.rb +73 -0
  9. data/lib/solusvm/cli/server_cli.rb +168 -0
  10. data/lib/solusvm/cli.rb +22 -0
  11. data/lib/solusvm/client.rb +26 -12
  12. data/lib/solusvm/general.rb +25 -17
  13. data/lib/solusvm/node.rb +60 -0
  14. data/lib/solusvm/reseller.rb +72 -0
  15. data/lib/solusvm/server.rb +116 -2
  16. data/lib/solusvm/version.rb +1 -1
  17. data/lib/solusvm.rb +8 -8
  18. data/solusvm.gemspec +3 -0
  19. data/test/cli/test_client_cli.rb +80 -0
  20. data/test/cli/test_general_cli.rb +35 -0
  21. data/test/cli/test_node_cli.rb +64 -0
  22. data/test/cli/test_reseller_cli.rb +139 -0
  23. data/test/cli/test_server_cli.rb +267 -0
  24. data/test/fixtures/client_delete_success.txt +2 -0
  25. data/test/fixtures/client_list_success.txt +14 -0
  26. data/test/fixtures/client_list_success_empty.txt +2 -0
  27. data/test/fixtures/general_isos_success.txt +3 -0
  28. data/test/fixtures/general_node_virtualservers_success.txt +15 -0
  29. data/test/fixtures/general_node_virtualservers_success_empty.txt +2 -0
  30. data/test/fixtures/general_node_xenresources_success.txt +4 -0
  31. data/test/fixtures/general_nodes_ids_success.txt +3 -0
  32. data/test/fixtures/general_plans_success.txt +3 -0
  33. data/test/fixtures/reseller_change_resources_success.txt +16 -0
  34. data/test/fixtures/reseller_create_success.txt +23 -0
  35. data/test/fixtures/reseller_delete_success.txt +2 -0
  36. data/test/fixtures/reseller_info_success.txt +23 -0
  37. data/test/fixtures/reseller_list_success.txt +3 -0
  38. data/test/fixtures/server_bootorder_success.txt +2 -0
  39. data/test/fixtures/server_change_consolepass_success.txt +3 -0
  40. data/test/fixtures/server_change_owner_success.txt +2 -0
  41. data/test/fixtures/server_change_vncpass_success.txt +3 -0
  42. data/test/fixtures/server_console_success.txt +7 -0
  43. data/test/fixtures/server_hostname_success.txt +3 -0
  44. data/test/fixtures/server_mountiso_success.txt +2 -0
  45. data/test/fixtures/server_network_disable_success.txt +2 -0
  46. data/test/fixtures/server_network_enable_success.txt +2 -0
  47. data/test/fixtures/server_pae_success.txt +2 -0
  48. data/test/fixtures/server_rootpassword_success.txt +3 -0
  49. data/test/fixtures/server_status_success.txt +2 -0
  50. data/test/fixtures/server_tun_disable_success.txt +2 -0
  51. data/test/fixtures/server_tun_enable_success.txt +2 -0
  52. data/test/fixtures/server_unmountiso_success.txt +2 -0
  53. data/test/fixtures/server_vnc_success.txt +6 -0
  54. data/test/helper.rb +6 -0
  55. data/test/test_cli.rb +17 -0
  56. data/test/test_client.rb +50 -6
  57. data/test/test_general.rb +24 -48
  58. data/test/test_node.rb +107 -0
  59. data/test/test_reseller.rb +75 -0
  60. data/test/test_server.rb +95 -1
  61. metadata +132 -17
@@ -0,0 +1,16 @@
1
+ <status>success</status>
2
+ <statusmsg>Successfully modified reseller resources</statusmsg>
3
+ <maxvps>10</maxvps>
4
+ <maxdisk>21474836480</maxdisk>
5
+ <maxmem>10737418240</maxmem>
6
+ <maxusers>20</maxusers>
7
+ <maxipv4>4</maxipv4>
8
+ <maxipv6>6</maxipv6>
9
+ <maxburst>10738466816</maxburst>
10
+ <maxbw>107374182400</maxbw>
11
+ <nodegroupids>14,11,9</nodegroupids>
12
+ <mediagroupids>14,11,9</mediagroupids>
13
+ <xenpv>1</xenpv>
14
+ <xenhvm>1</xenhvm>
15
+ <kvm>1</kvm>
16
+ <openvz>1</openvz>
@@ -0,0 +1,23 @@
1
+ <status>success</status>
2
+ <statusmsg>Successfully added reseller</statusmsg>
3
+ <username>reseller123</username>
4
+ <password>123456</password>
5
+ <email>reseller3@email.com</email>
6
+ <firstname>Phill</firstname>
7
+ <lastname>Smith</lastname>
8
+ <company>FastServers</company>
9
+ <usernameprefix>vpsuser</usernameprefix>
10
+ <maxvps>10</maxvps>
11
+ <maxdisk>21474836480</maxdisk>
12
+ <maxmem>10737418240</maxmem>
13
+ <maxusers>20</maxusers>
14
+ <maxipv4>4</maxipv4>
15
+ <maxipv6>6</maxipv6>
16
+ <maxburst>10738466816</maxburst>
17
+ <maxbw>107374182400</maxbw>
18
+ <nodegroupids>14,11,9</nodegroupids>
19
+ <mediagroupids>14,11,9</mediagroupids>
20
+ <xenpv>1</xenpv>
21
+ <xenhvm>1</xenhvm>
22
+ <kvm>1</kvm>
23
+ <openvz>1</openvz>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Reseller deleted</statusmsg>
@@ -0,0 +1,23 @@
1
+ <status>success</status>
2
+ <statusmsg>Successfully added reseller</statusmsg>
3
+ <username>reseller123</username>
4
+ <password>123456</password>
5
+ <email>reseller3@email.com</email>
6
+ <firstname>Phill</firstname>
7
+ <lastname>Smith</lastname>
8
+ <company>FastServers</company>
9
+ <usernameprefix>vpsuser</usernameprefix>
10
+ <maxvps>10</maxvps>
11
+ <maxdisk>21474836480</maxdisk>
12
+ <maxmem>10737418240</maxmem>
13
+ <maxusers>20</maxusers>
14
+ <maxipv4>4</maxipv4>
15
+ <maxipv6>6</maxipv6>
16
+ <maxburst>10738466816</maxburst>
17
+ <maxbw>107374182400</maxbw>
18
+ <nodegroupids>14,11,9</nodegroupids>
19
+ <mediagroupids>14,11,9</mediagroupids>
20
+ <xenpv>1</xenpv>
21
+ <xenhvm>1</xenhvm>
22
+ <kvm>1</kvm>
23
+ <openvz>1</openvz>
@@ -0,0 +1,3 @@
1
+ <status>success</status>
2
+ <statusmsg></statusmsg>
3
+ <usernames>username1,username2,username3</usernames>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Boot order changed</statusmsg>
@@ -0,0 +1,3 @@
1
+ <status>success</status>
2
+ <statusmsg>Virtual server console password changed</statusmsg>
3
+ <consolepassword></consolepassword>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Successfully changed owner</statusmsg>
@@ -0,0 +1,3 @@
1
+ <status>success</status>
2
+ <statusmsg>Virtual server vnc password changed</statusmsg>
3
+ <vncpassword></vncpassword>
@@ -0,0 +1,7 @@
1
+ <status>success</status>
2
+ <statusmsg></statusmsg>
3
+ <type>thetype</type>
4
+ <consoleip>theconsoleip</consoleip>
5
+ <consoleport>theconsoleport</consoleport>
6
+ <consolepassword>theconsolepassword</consolepassword>
7
+ <consoleusername>theconsoleusername</consoleusername>
@@ -0,0 +1,3 @@
1
+ <status>success</status>
2
+ <statusmsg>Virtual server hostname changed</statusmsg>
3
+ <hostname>hostname</hostname>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>ISO mounted</statusmsg>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Virtual server network disabled</statusmsg>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Virtual server network enabled</statusmsg>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Enabled|Disabled</statusmsg>
@@ -0,0 +1,3 @@
1
+ <status>success</status>
2
+ <statusmsg>Virtual server root password changed</statusmsg>
3
+ <rootpassword>rootpassword</rootpassword>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>online</statusmsg>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Disabled</statusmsg>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>Enabled</statusmsg>
@@ -0,0 +1,2 @@
1
+ <status>success</status>
2
+ <statusmsg>ISO unmounted</statusmsg>
@@ -0,0 +1,6 @@
1
+ <status>success</status>
2
+ <statusmsg></statusmsg>
3
+ <type>thetype</type>
4
+ <vncip>thevncip</vncip>
5
+ <vncport>thevncport</vncport>
6
+ <vncpassword>thevncpassword</vncpassword>
data/test/helper.rb CHANGED
@@ -8,6 +8,7 @@ end
8
8
 
9
9
  require 'solusvm'
10
10
  require 'fake_web'
11
+ require 'mocha'
11
12
 
12
13
  class Test::Unit::TestCase
13
14
  def load_response(name)
@@ -26,4 +27,9 @@ class Test::Unit::TestCase
26
27
  Solusvm.config(api_login[:id], api_login[:key], :url => 'http://www.example.com/api')
27
28
  end
28
29
 
30
+ def cli_expand_base_arguments(options)
31
+ arguments = ["--api-login", "thelogin", "--api-key", "thekey", "--api-url", "theurl"]
32
+ options + arguments
33
+ end
34
+
29
35
  end
data/test/test_cli.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'helper'
2
+ require 'solusvm/cli'
3
+
4
+ class TestCli < Test::Unit::TestCase
5
+
6
+ def setup
7
+ # Prevents mocha from stubbing non existent methods so that we now if the CLI is failing because
8
+ # something was moved around.
9
+ Mocha::Configuration.prevent(:stubbing_non_existent_method)
10
+ end
11
+
12
+ def test_should_print_version
13
+ $stdout.expects(:puts).with(Solusvm::VERSION)
14
+ Solusvm::Cli.start(cli_expand_base_arguments(["version"]))
15
+ end
16
+
17
+ end
data/test/test_client.rb CHANGED
@@ -12,9 +12,9 @@ class TestClient < Test::Unit::TestCase
12
12
  def test_create
13
13
  options = {:username => 'vps123', :password=> '123456', :email=> 'email@address.com', :firstname => 'phill', :lastname => 'smith'}
14
14
  FakeWeb.register_uri(:get, "#{base_uri}&action=client-create&#{options.to_query}", :body => load_response('client_create_success'))
15
- assert @client.create(options)
16
15
 
17
- params = @client.returned_parameters
16
+ params = @client.create(options)
17
+ assert params
18
18
  assert_equal options[:username], params['username']
19
19
  assert_equal options[:firstname], params['firstname']
20
20
  assert_equal options[:lastname], params['lastname']
@@ -37,18 +37,62 @@ class TestClient < Test::Unit::TestCase
37
37
  end
38
38
 
39
39
  def test_change_password
40
- FakeWeb.register_uri(:get, "#{base_uri}&action=client-updatepassword&username=vps123&password=123456", :body => load_response('client_change_password_success'))
41
- FakeWeb.register_uri(:get, "#{base_uri}&action=client-updatepassword&username=vps13&password=thecake", :body => load_response('client_change_password_error'))
40
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-updatepassword&username=vps123&password=123456", :body => load_response('client_change_password_success'))
42
41
  assert @client.change_password("vps123","123456")
42
+ end
43
+
44
+ def test_change_password_fail
45
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-updatepassword&username=vps13&password=thecake", :body => load_response('client_change_password_error'))
43
46
  assert !@client.change_password("vps13","thecake")
44
47
  end
45
48
 
46
49
  def test_authenticate
47
50
  FakeWeb.register_uri(:get, "#{base_uri}&action=client-authenticate&username=u&password=p", :body => load_response('client_authenticate_success'))
48
- FakeWeb.register_uri(:get, "#{base_uri}&action=client-authenticate&username=u&password=notp", :body => load_response('client_authenticate_error'))
49
51
  assert @client.authenticate('u', 'p')
52
+ end
53
+
54
+ def test_authenticate_fail
55
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-authenticate&username=u&password=notp", :body => load_response('client_authenticate_error'))
50
56
  assert ! @client.authenticate('u', 'notp')
51
57
  assert_equal 'invalid username or password', @client.statusmsg
52
-
58
+ end
59
+
60
+ def test_delete
61
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-delete&username=vps123", :body => load_response('client_delete_success'))
62
+ assert @client.delete("vps123")
63
+ end
64
+
65
+ def test_delete_fail
66
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-delete&username=vps123", :body => load_response('error'))
67
+ assert !@client.delete("vps123")
68
+ end
69
+
70
+ def test_list
71
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-list", :body => load_response('client_list_success'))
72
+
73
+ clients = @client.list
74
+ assert_equal 1, clients.size
75
+
76
+ client = clients.first
77
+ assert_equal "1", client["id"]
78
+ assert_equal "vps123", client["username"]
79
+ assert_equal "vps123@email.com", client["email"]
80
+ assert_equal "phill", client["firstname"]
81
+ assert_equal "smith", client["lastname"]
82
+ assert_equal "VPS Co", client["company"]
83
+ assert_equal "Client", client["level"]
84
+ assert_equal "Active", client["status"]
85
+ assert_equal "2009-01-01", client["created"]
86
+ assert_equal "2010-04-23", client["lastlogin"]
87
+ end
88
+
89
+ def test_list_empty
90
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-list", :body => load_response('client_list_success_empty'))
91
+ assert @client.list.empty?
92
+ end
93
+
94
+ def test_list_fail
95
+ FakeWeb.register_uri(:get, "#{base_uri}&action=client-list", :body => load_response('error'))
96
+ assert_nil @client.list
53
97
  end
54
98
  end
data/test/test_general.rb CHANGED
@@ -8,72 +8,48 @@ class TestGeneral < Test::Unit::TestCase
8
8
  @general = Solusvm::General.new
9
9
  end
10
10
 
11
- def test_nodes
12
- FakeWeb.register_uri(:get, "#{base_uri}&action=listnodes&type=xen", :body => load_response('general_nodes_success'))
13
- actual_nodes = @general.nodes('xen')
14
- expected_nodes = %w(node1 node2 node3 node4)
15
- assert_equal expected_nodes, actual_nodes
11
+ def test_templates
12
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listtemplates&type=xen", :body => load_response('general_templates_success'))
13
+ assert_equal %w(template1 template2 template3), @general.templates('xen')
16
14
  end
17
15
 
18
- def test_nodes_error
19
- FakeWeb.register_uri(:get, "#{base_uri}&action=listnodes&type=whatever", :body => load_response('error'))
16
+ def test_templates_error
17
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listtemplates&type=whatever", :body => load_response('error'))
20
18
  begin
21
- @general.nodes('whatever')
19
+ @general.templates('whatever')
22
20
  flunk "Shouldn't get here"
23
21
  rescue Solusvm::SolusvmError => e
24
22
  assert e.message.match /Invalid Virtual Server type/
25
23
  end
26
24
  end
27
25
 
28
- def test_templates
29
- FakeWeb.register_uri(:get, "#{base_uri}&action=listtemplates&type=xen", :body => load_response('general_templates_success'))
30
- actual_templates = @general.templates('xen')
31
- expected_templates = %w(template1 template2 template3)
32
- assert_equal expected_templates, actual_templates
26
+ def test_plans
27
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listplans&type=xen", :body => load_response('general_plans_success'))
28
+ assert_equal %w(plan1 plan2 plan3 plan4), @general.plans('xen')
33
29
  end
34
30
 
35
- def test_template_error
36
- FakeWeb.register_uri(:get, "#{base_uri}&action=listtemplates&type=whatever", :body => load_response('error'))
31
+ def test_plans_error
32
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listplans&type=whatever", :body => load_response('error'))
37
33
  begin
38
- @general.templates('whatever')
34
+ @general.plans('whatever')
39
35
  flunk "Shouldn't get here"
40
36
  rescue Solusvm::SolusvmError => e
41
37
  assert e.message.match /Invalid Virtual Server type/
42
38
  end
43
39
  end
44
40
 
45
- def test_node_statistics
46
- FakeWeb.register_uri(:get, "#{base_uri}&action=node-statistics&nodeid=1", :body => load_response('general_node_statistics_success'))
47
- node_statistics = @general.node_statistics(1)
48
-
49
- assert_equal '1000', node_statistics['freedisk']
50
- assert_equal '22', node_statistics['sshport']
51
- assert_equal 'city', node_statistics['city']
52
- assert_equal 'name', node_statistics['name']
53
- assert_equal '0', node_statistics['freeips']
54
- assert_equal 'country', node_statistics['country']
55
- assert_equal 'x86_64', node_statistics['arch']
56
- assert_equal '1', node_statistics['id']
57
- assert_equal '10', node_statistics['freememory']
58
- assert_equal '2', node_statistics['virtualservers']
59
- assert_equal '127.0.0.1', node_statistics['ip']
60
- assert_equal 'hostname.com', node_statistics['hostname']
61
- assert_equal 'success', node_statistics['status']
41
+ def test_isos
42
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listiso&type=xen", :body => load_response('general_isos_success'))
43
+ assert_equal %w(iso1 iso2 iso3), @general.isos('xen')
62
44
  end
63
45
 
64
- def test_list_all_ips_available
65
- FakeWeb.register_uri(:get, "#{base_uri}&action=node-iplist&nodeid=1", :body => load_response('general_node_list_all_ips_available'))
66
- avaialble_ips = @general.node_available_ips(1)
67
-
68
- expected_ips = %w(123.123.123.123 124.124.124.124 125.125.125.125).sort
69
- assert !avaialble_ips.empty?
70
- assert_equal expected_ips, avaialble_ips.sort
71
- end
72
-
73
- def test_list_all_ips_not_available
74
- FakeWeb.register_uri(:get, "#{base_uri}&action=node-iplist&nodeid=1", :body => load_response('general_node_list_all_ips_not_available'))
75
- avaialble_ips = @general.node_available_ips(1)
76
-
77
- assert avaialble_ips.empty?
46
+ def test_isos_error
47
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listiso&type=whatever", :body => load_response('error'))
48
+ begin
49
+ @general.isos('whatever')
50
+ flunk "Shouldn't get here"
51
+ rescue Solusvm::SolusvmError => e
52
+ assert e.message.match /Invalid Virtual Server type/
53
+ end
78
54
  end
79
- end
55
+ end
data/test/test_node.rb ADDED
@@ -0,0 +1,107 @@
1
+ require 'helper'
2
+
3
+ class TestNode < Test::Unit::TestCase
4
+ def setup
5
+ FakeWeb.allow_net_connect = false
6
+ FakeWeb.clean_registry
7
+ setup_solusvm
8
+ @nodes = Solusvm::Node.new
9
+ end
10
+
11
+ def test_list
12
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listnodes&type=xen", :body => load_response('general_nodes_success'))
13
+ assert_equal %w(node1 node2 node3 node4), @nodes.list('xen')
14
+ end
15
+
16
+ def test_nodes_error
17
+ FakeWeb.register_uri(:get, "#{base_uri}&action=listnodes&type=whatever", :body => load_response('error'))
18
+ begin
19
+ @nodes.list('whatever')
20
+ flunk "Shouldn't get here"
21
+ rescue Solusvm::SolusvmError => e
22
+ assert e.message.match /Invalid Virtual Server type/
23
+ end
24
+ end
25
+
26
+ def test_statistics
27
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-statistics&nodeid=1", :body => load_response('general_node_statistics_success'))
28
+ node_statistics = @nodes.statistics(1)
29
+
30
+ assert_equal '1000', node_statistics['freedisk']
31
+ assert_equal '22', node_statistics['sshport']
32
+ assert_equal 'city', node_statistics['city']
33
+ assert_equal 'name', node_statistics['name']
34
+ assert_equal '0', node_statistics['freeips']
35
+ assert_equal 'country', node_statistics['country']
36
+ assert_equal 'x86_64', node_statistics['arch']
37
+ assert_equal '1', node_statistics['id']
38
+ assert_equal '10', node_statistics['freememory']
39
+ assert_equal '2', node_statistics['virtualservers']
40
+ assert_equal '127.0.0.1', node_statistics['ip']
41
+ assert_equal 'hostname.com', node_statistics['hostname']
42
+ assert_equal 'success', node_statistics['status']
43
+ end
44
+
45
+ def test_list_all_ips_available
46
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-iplist&nodeid=1", :body => load_response('general_node_list_all_ips_available'))
47
+ assert_equal %w(123.123.123.123 124.124.124.124 125.125.125.125).sort, @nodes.available_ips(1).sort
48
+ end
49
+
50
+ def test_list_all_ips_not_available
51
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-iplist&nodeid=1", :body => load_response('general_node_list_all_ips_not_available'))
52
+ assert @nodes.available_ips(1).empty?
53
+ end
54
+
55
+ def test_ids
56
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-idlist&type=xen", :body => load_response('general_nodes_ids_success'))
57
+ assert_equal %w(nodeid1 nodeid2 nodeid3 nodeid4), @nodes.ids('xen')
58
+ end
59
+
60
+ def test_nodes_ids_error
61
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-idlist&type=whatever", :body => load_response('error'))
62
+ begin
63
+ @nodes.ids('whatever')
64
+ flunk "Shouldn't get here"
65
+ rescue Solusvm::SolusvmError => e
66
+ assert e.message.match /Invalid Virtual Server type/
67
+ end
68
+ end
69
+
70
+ def test_virtualservers
71
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-virtualservers&nodeid=1", :body => load_response('general_node_virtualservers_success'))
72
+
73
+ servers = @nodes.virtualservers(1)
74
+ assert_equal 1, servers.size
75
+
76
+ server = servers.first
77
+ assert_equal "theid", server["vserverid"]
78
+ assert_equal "thexid", server["ctid-xid"]
79
+ assert_equal "theclientid", server["clientid"]
80
+ assert_equal "theip", server["ipaddress"]
81
+ assert_equal "thehostname", server["hostname"]
82
+ assert_equal "thetemplate", server["template"]
83
+ assert_equal "thediskspace", server["hdd"]
84
+ assert_equal "thememory", server["memory"]
85
+ assert_equal "theswap", server["swap-burst"]
86
+ assert_equal "thetype", server["type"]
87
+ assert_equal "themac", server["mac"]
88
+ end
89
+
90
+ def test_virtualservers_empty
91
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-virtualservers&nodeid=1", :body => load_response('general_node_virtualservers_success_empty'))
92
+ assert @nodes.virtualservers(1).empty?
93
+ end
94
+
95
+ def test_virtualservers_fail
96
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-virtualservers&nodeid=1", :body => load_response('error'))
97
+ assert_nil @nodes.virtualservers(1)
98
+ end
99
+
100
+ def test_xenresources
101
+ FakeWeb.register_uri(:get, "#{base_uri}&action=node-xenresources&nodeid=1", :body => load_response('general_node_xenresources_success'))
102
+ node_resources = @nodes.xenresources(1)
103
+
104
+ assert_equal 'thefreememory', node_resources['freememory']
105
+ assert_equal 'thefreehdd', node_resources['freehdd']
106
+ end
107
+ end
@@ -0,0 +1,75 @@
1
+ require 'helper'
2
+
3
+ class TestReseller < Test::Unit::TestCase
4
+
5
+ def setup
6
+ setup_solusvm
7
+ FakeWeb.allow_net_connect = false
8
+ FakeWeb.clean_registry
9
+ @reseller = Solusvm::Reseller.new
10
+ end
11
+
12
+ def test_create
13
+ options = {:username => 'reseller123', :password=> '123456', :email=> 'reseller3@email.com', :firstname => 'Phill', :lastname => 'Smith'}
14
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-create&#{options.to_query}", :body => load_response('reseller_create_success'))
15
+
16
+ params = @reseller.create(options)
17
+
18
+ assert params
19
+ assert_equal options[:username], params['username']
20
+ assert_equal options[:firstname], params['firstname']
21
+ assert_equal options[:lastname], params['lastname']
22
+ assert_equal options[:password], params['password']
23
+ assert_equal options[:email], params['email']
24
+ end
25
+
26
+ def test_create_fail
27
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-create", :body => load_response('error'))
28
+ assert ! @reseller.create
29
+ assert_equal 'error message', @reseller.statusmsg
30
+ end
31
+
32
+ def test_change_resources
33
+ options = {:maxvps => 10}
34
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-modifyresources&username=vps123&#{options.to_query}", :body => load_response('reseller_change_resources_success'))
35
+
36
+ params = @reseller.change_resources("vps123", options)
37
+
38
+ assert params
39
+ assert "10", params['maxvps']
40
+ end
41
+
42
+ def test_change_resources_fail
43
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-modifyresources&username=vps13", :body => load_response('error'))
44
+ assert !@reseller.change_resources("vps13")
45
+ end
46
+
47
+ def test_info
48
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-info&username=vps123", :body => load_response('reseller_info_success'))
49
+
50
+ params = @reseller.info("vps123")
51
+
52
+ assert params
53
+ assert_equal "reseller123", params['username']
54
+ assert_equal "Phill", params['firstname']
55
+ assert_equal "Smith", params['lastname']
56
+ assert_equal "123456", params['password']
57
+ assert_equal "reseller3@email.com", params['email']
58
+ end
59
+
60
+ def test_info_fail
61
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-info&username=vps13", :body => load_response('error'))
62
+ assert !@reseller.info("vps13")
63
+ end
64
+
65
+ def test_list
66
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-list", :body => load_response('reseller_list_success'))
67
+ assert_equal %w(username1 username2 username3), @reseller.list
68
+ end
69
+
70
+ def test_delete
71
+ FakeWeb.register_uri(:get, "#{base_uri}&action=reseller-delete&username=vps123", :body => load_response('reseller_delete_success'))
72
+ assert @reseller.delete("vps123")
73
+ end
74
+
75
+ end