1and1 1.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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/1and1-1.0.gem +0 -0
- data/1and1.gemspec +20 -0
- data/Gemfile +4 -0
- data/LICENSE +201 -0
- data/README.md +499 -0
- data/docs/reference.md +2447 -0
- data/examples/dvd_examples.rb +15 -0
- data/examples/example_app.rb +100 -0
- data/examples/firewall_examples.rb +137 -0
- data/examples/image_examples.rb +48 -0
- data/examples/load_balancer_examples.rb +145 -0
- data/examples/log_examples.rb +15 -0
- data/examples/monitoring_center_examples.rb +15 -0
- data/examples/monitoring_policy_examples.rb +343 -0
- data/examples/private_network_examples.rb +86 -0
- data/examples/public_ip_examples.rb +42 -0
- data/examples/role_examples.rb +113 -0
- data/examples/server_appliance_examples.rb +15 -0
- data/examples/server_examples.rb +438 -0
- data/examples/shared_storage_examples.rb +108 -0
- data/examples/usage_examples.rb +6 -0
- data/examples/user_examples.rb +113 -0
- data/examples/vpn_examples.rb +56 -0
- data/lib/1and1/datacenter.rb +73 -0
- data/lib/1and1/dvd.rb +73 -0
- data/lib/1and1/firewall.rb +427 -0
- data/lib/1and1/image.rb +231 -0
- data/lib/1and1/load_balancer.rb +448 -0
- data/lib/1and1/log.rb +77 -0
- data/lib/1and1/monitoring_center.rb +84 -0
- data/lib/1and1/monitoring_policy.rb +598 -0
- data/lib/1and1/oneandone.rb +57 -0
- data/lib/1and1/ping.rb +41 -0
- data/lib/1and1/ping_auth.rb +41 -0
- data/lib/1and1/pricing.rb +41 -0
- data/lib/1and1/private_network.rb +333 -0
- data/lib/1and1/public_ip.rb +192 -0
- data/lib/1and1/role.rb +381 -0
- data/lib/1and1/server.rb +1208 -0
- data/lib/1and1/server_appliance.rb +73 -0
- data/lib/1and1/shared_storage.rb +379 -0
- data/lib/1and1/usage.rb +58 -0
- data/lib/1and1/user.rb +374 -0
- data/lib/1and1/vpn.rb +249 -0
- data/lib/oneandone.rb +27 -0
- data/sphinx/Makefile +192 -0
- data/sphinx/_build/doctrees/dvds.doctree +0 -0
- data/sphinx/_build/doctrees/environment.pickle +0 -0
- data/sphinx/_build/doctrees/firewalls.doctree +0 -0
- data/sphinx/_build/doctrees/images.doctree +0 -0
- data/sphinx/_build/doctrees/index.doctree +0 -0
- data/sphinx/_build/doctrees/load_balancers.doctree +0 -0
- data/sphinx/_build/doctrees/logs.doctree +0 -0
- data/sphinx/_build/doctrees/monitoring_center.doctree +0 -0
- data/sphinx/_build/doctrees/monitoring_policies.doctree +0 -0
- data/sphinx/_build/doctrees/private_networks.doctree +0 -0
- data/sphinx/_build/doctrees/public_ips.doctree +0 -0
- data/sphinx/_build/doctrees/server_appliances.doctree +0 -0
- data/sphinx/_build/doctrees/servers.doctree +0 -0
- data/sphinx/_build/doctrees/shared_storages.doctree +0 -0
- data/sphinx/_build/doctrees/usages.doctree +0 -0
- data/sphinx/_build/doctrees/users.doctree +0 -0
- data/sphinx/_build/html/.buildinfo +4 -0
- data/sphinx/_build/html/_sources/dvds.txt +42 -0
- data/sphinx/_build/html/_sources/firewalls.txt +189 -0
- data/sphinx/_build/html/_sources/images.txt +101 -0
- data/sphinx/_build/html/_sources/index.txt +499 -0
- data/sphinx/_build/html/_sources/load_balancers.txt +231 -0
- data/sphinx/_build/html/_sources/logs.txt +55 -0
- data/sphinx/_build/html/_sources/monitoring_center.txt +55 -0
- data/sphinx/_build/html/_sources/monitoring_policies.txt +288 -0
- data/sphinx/_build/html/_sources/private_networks.txt +146 -0
- data/sphinx/_build/html/_sources/public_ips.txt +78 -0
- data/sphinx/_build/html/_sources/server_appliances.txt +42 -0
- data/sphinx/_build/html/_sources/servers.txt +630 -0
- data/sphinx/_build/html/_sources/shared_storages.txt +160 -0
- data/sphinx/_build/html/_sources/usages.txt +45 -0
- data/sphinx/_build/html/_sources/users.txt +172 -0
- data/sphinx/_build/html/_static/ajax-loader.gif +0 -0
- data/sphinx/_build/html/_static/alabaster.css +585 -0
- data/sphinx/_build/html/_static/basic.css +599 -0
- data/sphinx/_build/html/_static/comment-bright.png +0 -0
- data/sphinx/_build/html/_static/comment-close.png +0 -0
- data/sphinx/_build/html/_static/comment.png +0 -0
- data/sphinx/_build/html/_static/doctools.js +263 -0
- data/sphinx/_build/html/_static/down-pressed.png +0 -0
- data/sphinx/_build/html/_static/down.png +0 -0
- data/sphinx/_build/html/_static/file.png +0 -0
- data/sphinx/_build/html/_static/jquery-1.11.1.js +10308 -0
- data/sphinx/_build/html/_static/jquery.js +4 -0
- data/sphinx/_build/html/_static/minus.png +0 -0
- data/sphinx/_build/html/_static/plus.png +0 -0
- data/sphinx/_build/html/_static/pygments.css +63 -0
- data/sphinx/_build/html/_static/searchtools.js +651 -0
- data/sphinx/_build/html/_static/underscore-1.3.1.js +999 -0
- data/sphinx/_build/html/_static/underscore.js +31 -0
- data/sphinx/_build/html/_static/up-pressed.png +0 -0
- data/sphinx/_build/html/_static/up.png +0 -0
- data/sphinx/_build/html/_static/websupport.js +808 -0
- data/sphinx/_build/html/dvds.html +151 -0
- data/sphinx/_build/html/firewalls.html +397 -0
- data/sphinx/_build/html/genindex.html +114 -0
- data/sphinx/_build/html/images.html +236 -0
- data/sphinx/_build/html/index.html +571 -0
- data/sphinx/_build/html/load_balancers.html +409 -0
- data/sphinx/_build/html/logs.html +160 -0
- data/sphinx/_build/html/monitoring_center.html +160 -0
- data/sphinx/_build/html/monitoring_policies.html +530 -0
- data/sphinx/_build/html/objects.inv +0 -0
- data/sphinx/_build/html/private_networks.html +316 -0
- data/sphinx/_build/html/public_ips.html +215 -0
- data/sphinx/_build/html/rb-modindex.html +106 -0
- data/sphinx/_build/html/search.html +99 -0
- data/sphinx/_build/html/searchindex.js +1 -0
- data/sphinx/_build/html/server_appliances.html +153 -0
- data/sphinx/_build/html/servers.html +994 -0
- data/sphinx/_build/html/shared_storages.html +349 -0
- data/sphinx/_build/html/usages.html +140 -0
- data/sphinx/_build/html/users.html +363 -0
- data/sphinx/conf.py +287 -0
- data/sphinx/dvds.rst +42 -0
- data/sphinx/firewalls.rst +189 -0
- data/sphinx/images.rst +101 -0
- data/sphinx/index.rst +499 -0
- data/sphinx/load_balancers.rst +231 -0
- data/sphinx/logs.rst +55 -0
- data/sphinx/make.bat +263 -0
- data/sphinx/monitoring_center.rst +55 -0
- data/sphinx/monitoring_policies.rst +288 -0
- data/sphinx/private_networks.rst +146 -0
- data/sphinx/public_ips.rst +78 -0
- data/sphinx/server_appliances.rst +42 -0
- data/sphinx/servers.rst +630 -0
- data/sphinx/shared_storages.rst +160 -0
- data/sphinx/usages.rst +45 -0
- data/sphinx/users.rst +172 -0
- data/test/mock-api/add-firewall.json +66 -0
- data/test/mock-api/add-hdd.json +49 -0
- data/test/mock-api/add-lb.json +71 -0
- data/test/mock-api/add-new-ip.json +18 -0
- data/test/mock-api/add-pn.json +66 -0
- data/test/mock-api/add-port-mp.json +81 -0
- data/test/mock-api/add-process-mp.json +20 -0
- data/test/mock-api/add-rule-fp.json +33 -0
- data/test/mock-api/add-rule-lb.json +40 -0
- data/test/mock-api/add-server-ip.json +66 -0
- data/test/mock-api/add-server-mp.json +66 -0
- data/test/mock-api/assign-ip-fp.json +32 -0
- data/test/mock-api/assign-server-lb.json +39 -0
- data/test/mock-api/attach-server-pn.json +14 -0
- data/test/mock-api/attach-server-storage.json +24 -0
- data/test/mock-api/change-api-key.json +15 -0
- data/test/mock-api/change-password.json +5 -0
- data/test/mock-api/change-server-status.json +70 -0
- data/test/mock-api/clone-server.json +29 -0
- data/test/mock-api/create-fp.json +26 -0
- data/test/mock-api/create-image.json +30 -0
- data/test/mock-api/create-lb.json +33 -0
- data/test/mock-api/create-mp.json +81 -0
- data/test/mock-api/create-pn.json +11 -0
- data/test/mock-api/create-public-ip.json +10 -0
- data/test/mock-api/create-server.json +34 -0
- data/test/mock-api/create-snapshot.json +74 -0
- data/test/mock-api/create-storage.json +13 -0
- data/test/mock-api/create-user.json +14 -0
- data/test/mock-api/delete-fp.json +26 -0
- data/test/mock-api/delete-image.json +26 -0
- data/test/mock-api/delete-ip.json +15 -0
- data/test/mock-api/delete-lb.json +33 -0
- data/test/mock-api/delete-mp.json +71 -0
- data/test/mock-api/delete-pn.json +11 -0
- data/test/mock-api/delete-public-ip.json +10 -0
- data/test/mock-api/delete-rule-fp.json +26 -0
- data/test/mock-api/delete-server.json +50 -0
- data/test/mock-api/delete-snapshot.json +74 -0
- data/test/mock-api/delete-storage.json +24 -0
- data/test/mock-api/delete-user.json +15 -0
- data/test/mock-api/detach-server-lb.json +33 -0
- data/test/mock-api/detach-server-mp.json +65 -0
- data/test/mock-api/detach-server-storage.json +19 -0
- data/test/mock-api/edit-image.json +26 -0
- data/test/mock-api/eject-dvd.json +66 -0
- data/test/mock-api/fixed-server-flavors.json +70 -0
- data/test/mock-api/get-appliance.json +16 -0
- data/test/mock-api/get-dvd.json +9 -0
- data/test/mock-api/get-firewall.json +26 -0
- data/test/mock-api/get-fixed-server.json +17 -0
- data/test/mock-api/get-fp-rule.json +7 -0
- data/test/mock-api/get-hardware.json +13 -0
- data/test/mock-api/get-hdd.json +5 -0
- data/test/mock-api/get-image.json +26 -0
- data/test/mock-api/get-lb-rule.json +7 -0
- data/test/mock-api/get-lb-server.json +5 -0
- data/test/mock-api/get-load-balancer.json +33 -0
- data/test/mock-api/get-log.json +23 -0
- data/test/mock-api/get-monitoring-center.json +161 -0
- data/test/mock-api/get-mp-port.json +7 -0
- data/test/mock-api/get-mp-process.json +6 -0
- data/test/mock-api/get-mp-server.json +4 -0
- data/test/mock-api/get-mp.json +65 -0
- data/test/mock-api/get-pn-server.json +4 -0
- data/test/mock-api/get-private-network.json +20 -0
- data/test/mock-api/get-public-ip.json +10 -0
- data/test/mock-api/get-server-dvd.json +4 -0
- data/test/mock-api/get-server-image.json +4 -0
- data/test/mock-api/get-server-ip-fp.json +4 -0
- data/test/mock-api/get-server-ip.json +8 -0
- data/test/mock-api/get-server-pn.json +16 -0
- data/test/mock-api/get-server-status.json +4 -0
- data/test/mock-api/get-server-storage.json +5 -0
- data/test/mock-api/get-server.json +44 -0
- data/test/mock-api/get-storage.json +19 -0
- data/test/mock-api/get-usage.json +161 -0
- data/test/mock-api/get-user-api-key.json +3 -0
- data/test/mock-api/get-user-api.json +7 -0
- data/test/mock-api/get-user.json +15 -0
- data/test/mock-api/list-appliances.json +66 -0
- data/test/mock-api/list-credentials.json +5 -0
- data/test/mock-api/list-dvds.json +128 -0
- data/test/mock-api/list-firewalls.json +54 -0
- data/test/mock-api/list-fp-rules.json +16 -0
- data/test/mock-api/list-hdds.json +7 -0
- data/test/mock-api/list-images.json +54 -0
- data/test/mock-api/list-lb-rules.json +16 -0
- data/test/mock-api/list-lb-servers.json +12 -0
- data/test/mock-api/list-load-balancers.json +68 -0
- data/test/mock-api/list-logs.json +49 -0
- data/test/mock-api/list-monitoring-center-usages.json +90 -0
- data/test/mock-api/list-mp-ports.json +16 -0
- data/test/mock-api/list-mp-processes.json +14 -0
- data/test/mock-api/list-mp-servers.json +10 -0
- data/test/mock-api/list-mps.json +152 -0
- data/test/mock-api/list-pn-servers.json +10 -0
- data/test/mock-api/list-private-networks.json +24 -0
- data/test/mock-api/list-public-ips.json +44 -0
- data/test/mock-api/list-server-fps.json +4 -0
- data/test/mock-api/list-server-ips-fp.json +7 -0
- data/test/mock-api/list-server-ips.json +10 -0
- data/test/mock-api/list-server-lbs.json +6 -0
- data/test/mock-api/list-server-pns.json +6 -0
- data/test/mock-api/list-servers.json +66 -0
- data/test/mock-api/list-snapshots.json +7 -0
- data/test/mock-api/list-storages.json +47 -0
- data/test/mock-api/list-usages.json +144 -0
- data/test/mock-api/list-user-ips.json +5 -0
- data/test/mock-api/list-users.json +31 -0
- data/test/mock-api/load-dvd.json +63 -0
- data/test/mock-api/modify-fp.json +26 -0
- data/test/mock-api/modify-lb.json +33 -0
- data/test/mock-api/modify-mp.json +81 -0
- data/test/mock-api/modify-pn.json +20 -0
- data/test/mock-api/modify-port-mp.json +81 -0
- data/test/mock-api/modify-process-mp.json +73 -0
- data/test/mock-api/modify-public-ip.json +10 -0
- data/test/mock-api/modify-server-hardware.json +44 -0
- data/test/mock-api/modify-server-hdd.json +54 -0
- data/test/mock-api/modify-server.json +44 -0
- data/test/mock-api/modify-storage.json +19 -0
- data/test/mock-api/modify-user-api.json +15 -0
- data/test/mock-api/modify-user.json +15 -0
- data/test/mock-api/reinstall-image.json +52 -0
- data/test/mock-api/remove-firewall-policy.json +26 -0
- data/test/mock-api/remove-hdd.json +54 -0
- data/test/mock-api/remove-ip-fp.json +26 -0
- data/test/mock-api/remove-lb.json +66 -0
- data/test/mock-api/remove-pn.json +71 -0
- data/test/mock-api/remove-port-mp.json +73 -0
- data/test/mock-api/remove-process-mp.json +66 -0
- data/test/mock-api/remove-rule-lb.json +33 -0
- data/test/mock-api/remove-server-ip.json +58 -0
- data/test/mock-api/remove-server-pn.json +16 -0
- data/test/mock-api/restore-snapshot.json +55 -0
- data/test/mock-api/storage-servers.json +12 -0
- data/test/test_mock_dvd.rb +55 -0
- data/test/test_mock_firewall.rb +309 -0
- data/test/test_mock_image.rb +123 -0
- data/test/test_mock_load_balancer.rb +312 -0
- data/test/test_mock_log.rb +55 -0
- data/test/test_mock_monitoring_center.rb +55 -0
- data/test/test_mock_monitoring_policy.rb +587 -0
- data/test/test_mock_private_network.rb +206 -0
- data/test/test_mock_public_ip.rb +118 -0
- data/test/test_mock_server.rb +929 -0
- data/test/test_mock_server_appliance.rb +55 -0
- data/test/test_mock_shared_storage.rb +256 -0
- data/test/test_mock_usage.rb +34 -0
- data/test/test_mock_user.rb +270 -0
- metadata +360 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
require_relative '../lib/oneandone'
|
|
2
|
+
require 'minitest/autorun'
|
|
3
|
+
|
|
4
|
+
class TestPrivateNetwork < Minitest::Test
|
|
5
|
+
def setup
|
|
6
|
+
|
|
7
|
+
OneAndOne.start('TEST-API-KEY')
|
|
8
|
+
@private_network = OneAndOne::PrivateNetwork.new(test: true)
|
|
9
|
+
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_list
|
|
14
|
+
|
|
15
|
+
# Read in mock JSON
|
|
16
|
+
file = File.read('mock-api/list-private-networks.json')
|
|
17
|
+
data = JSON.parse(file)
|
|
18
|
+
|
|
19
|
+
# Create stub and perform call
|
|
20
|
+
Excon.stub({:method => :get, :path => '/v1/private_networks'},
|
|
21
|
+
{:body => JSON.generate(data), :status => 200})
|
|
22
|
+
|
|
23
|
+
response = @private_network.list
|
|
24
|
+
|
|
25
|
+
# Assertions
|
|
26
|
+
assert_equal response[0]['id'], data[0]['id']
|
|
27
|
+
|
|
28
|
+
# Clear out stubs
|
|
29
|
+
Excon.stubs.clear
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_create
|
|
35
|
+
|
|
36
|
+
# Read in mock JSON
|
|
37
|
+
file = File.read('mock-api/create-pn.json')
|
|
38
|
+
data = JSON.parse(file)
|
|
39
|
+
|
|
40
|
+
# Create stub and perform call
|
|
41
|
+
Excon.stub({:method => :post, :path => '/v1/private_networks'},
|
|
42
|
+
{:body => JSON.generate(data), :status => 202})
|
|
43
|
+
|
|
44
|
+
response = @private_network.create(name: data['name'])
|
|
45
|
+
|
|
46
|
+
# Assertions
|
|
47
|
+
assert_equal response['name'], data['name']
|
|
48
|
+
|
|
49
|
+
# Clear out stubs
|
|
50
|
+
Excon.stubs.clear
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def test_get
|
|
56
|
+
|
|
57
|
+
# Read in mock JSON
|
|
58
|
+
file = File.read('mock-api/get-private-network.json')
|
|
59
|
+
data = JSON.parse(file)
|
|
60
|
+
|
|
61
|
+
# Create stub and perform call
|
|
62
|
+
Excon.stub({:method => :get, :path => "/v1/private_networks/#{data['id']}"},
|
|
63
|
+
{:body => JSON.generate(data), :status => 200})
|
|
64
|
+
|
|
65
|
+
response = @private_network.get(private_network_id: data['id'])
|
|
66
|
+
|
|
67
|
+
# Assertions
|
|
68
|
+
assert_equal response['id'], data['id']
|
|
69
|
+
|
|
70
|
+
# Clear out stubs
|
|
71
|
+
Excon.stubs.clear
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def test_modify
|
|
77
|
+
|
|
78
|
+
# Read in mock JSON
|
|
79
|
+
file = File.read('mock-api/modify-pn.json')
|
|
80
|
+
data = JSON.parse(file)
|
|
81
|
+
|
|
82
|
+
# Create stub and perform call
|
|
83
|
+
Excon.stub({:method => :put, :path => "/v1/private_networks/#{data['id']}"},
|
|
84
|
+
{:body => JSON.generate(data), :status => 202})
|
|
85
|
+
|
|
86
|
+
response = @private_network.modify(private_network_id: data['id'], name: 'New Name')
|
|
87
|
+
|
|
88
|
+
# Assertions
|
|
89
|
+
assert_equal response['name'], data['name']
|
|
90
|
+
|
|
91
|
+
# Clear out stubs
|
|
92
|
+
Excon.stubs.clear
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def test_delete
|
|
98
|
+
|
|
99
|
+
# Read in mock JSON
|
|
100
|
+
file = File.read('mock-api/delete-pn.json')
|
|
101
|
+
data = JSON.parse(file)
|
|
102
|
+
|
|
103
|
+
# Create stub and perform call
|
|
104
|
+
Excon.stub({:method => :delete, :path => "/v1/private_networks/#{data['id']}"},
|
|
105
|
+
{:body => JSON.generate(data), :status => 202})
|
|
106
|
+
|
|
107
|
+
response = @private_network.delete(private_network_id: data['id'])
|
|
108
|
+
|
|
109
|
+
# Assertions
|
|
110
|
+
assert_equal response['state'], 'REMOVING'
|
|
111
|
+
|
|
112
|
+
# Clear out stubs
|
|
113
|
+
Excon.stubs.clear
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def test_servers
|
|
119
|
+
|
|
120
|
+
# Read in mock JSON
|
|
121
|
+
file = File.read('mock-api/list-pn-servers.json')
|
|
122
|
+
data = JSON.parse(file)
|
|
123
|
+
|
|
124
|
+
# Create stub and perform call
|
|
125
|
+
Excon.stub({:method => :get, :path => "/v1/private_networks/PN-ID/servers"},
|
|
126
|
+
{:body => JSON.generate(data), :status => 200})
|
|
127
|
+
|
|
128
|
+
response = @private_network.servers(private_network_id: 'PN-ID')
|
|
129
|
+
|
|
130
|
+
# Assertions
|
|
131
|
+
assert_equal response.length, 2
|
|
132
|
+
|
|
133
|
+
# Clear out stubs
|
|
134
|
+
Excon.stubs.clear
|
|
135
|
+
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def test_server
|
|
140
|
+
|
|
141
|
+
# Read in mock JSON
|
|
142
|
+
file = File.read('mock-api/get-pn-server.json')
|
|
143
|
+
data = JSON.parse(file)
|
|
144
|
+
|
|
145
|
+
# Create stub and perform call
|
|
146
|
+
Excon.stub({:method => :get, :path => "/v1/private_networks/PN-ID/servers/#{data['id']}"},
|
|
147
|
+
{:body => JSON.generate(data), :status => 200})
|
|
148
|
+
|
|
149
|
+
response = @private_network.server(private_network_id: 'PN-ID', server_id: data['id'])
|
|
150
|
+
|
|
151
|
+
# Assertions
|
|
152
|
+
assert_equal response['id'], data['id']
|
|
153
|
+
|
|
154
|
+
# Clear out stubs
|
|
155
|
+
Excon.stubs.clear
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def test_remove_server
|
|
161
|
+
|
|
162
|
+
# Read in mock JSON
|
|
163
|
+
file = File.read('mock-api/remove-server-pn.json')
|
|
164
|
+
data = JSON.parse(file)
|
|
165
|
+
|
|
166
|
+
# Create stub and perform call
|
|
167
|
+
Excon.stub({:method => :delete, :path => "/v1/private_networks/#{data['id']}/servers/SERVER-ID"},
|
|
168
|
+
{:body => JSON.generate(data), :status => 200})
|
|
169
|
+
|
|
170
|
+
response = @private_network.remove_server(private_network_id: data['id'], server_id: 'SERVER-ID')
|
|
171
|
+
|
|
172
|
+
# Assertions
|
|
173
|
+
assert_equal response['state'], 'CONFIGURING'
|
|
174
|
+
|
|
175
|
+
# Clear out stubs
|
|
176
|
+
Excon.stubs.clear
|
|
177
|
+
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def test_add_servers
|
|
182
|
+
|
|
183
|
+
# Read in mock JSON
|
|
184
|
+
file = File.read('mock-api/attach-server-pn.json')
|
|
185
|
+
data = JSON.parse(file)
|
|
186
|
+
|
|
187
|
+
# Create stub and perform call
|
|
188
|
+
Excon.stub({:method => :post, :path => "/v1/private_networks/PN-ID/servers"},
|
|
189
|
+
{:body => JSON.generate(data), :status => 202})
|
|
190
|
+
|
|
191
|
+
server1 = '<SERVER-ID>'
|
|
192
|
+
|
|
193
|
+
servers = [server1]
|
|
194
|
+
|
|
195
|
+
response = @private_network.add_servers(private_network_id: 'PN-ID', servers: servers)
|
|
196
|
+
|
|
197
|
+
# Assertions
|
|
198
|
+
assert_equal response[0]['name'], data[0]['name']
|
|
199
|
+
|
|
200
|
+
# Clear out stubs
|
|
201
|
+
Excon.stubs.clear
|
|
202
|
+
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
require_relative '../lib/oneandone'
|
|
2
|
+
require 'minitest/autorun'
|
|
3
|
+
|
|
4
|
+
class TestPublicIP < Minitest::Test
|
|
5
|
+
def setup
|
|
6
|
+
|
|
7
|
+
OneAndOne.start('TEST-API-KEY')
|
|
8
|
+
@public_ip = OneAndOne::PublicIP.new(test: true)
|
|
9
|
+
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_list
|
|
14
|
+
|
|
15
|
+
# Read in mock JSON
|
|
16
|
+
file = File.read('mock-api/list-public-ips.json')
|
|
17
|
+
data = JSON.parse(file)
|
|
18
|
+
|
|
19
|
+
# Create stub and perform call
|
|
20
|
+
Excon.stub({:method => :get, :path => '/v1/public_ips'},
|
|
21
|
+
{:body => JSON.generate(data), :status => 200})
|
|
22
|
+
|
|
23
|
+
response = @public_ip.list
|
|
24
|
+
|
|
25
|
+
# Assertions
|
|
26
|
+
assert_equal response[0]['id'], data[0]['id']
|
|
27
|
+
|
|
28
|
+
# Clear out stubs
|
|
29
|
+
Excon.stubs.clear
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_create
|
|
35
|
+
|
|
36
|
+
# Read in mock JSON
|
|
37
|
+
file = File.read('mock-api/create-public-ip.json')
|
|
38
|
+
data = JSON.parse(file)
|
|
39
|
+
|
|
40
|
+
# Create stub and perform call
|
|
41
|
+
Excon.stub({:method => :post, :path => '/v1/public_ips'},
|
|
42
|
+
{:body => JSON.generate(data), :status => 202})
|
|
43
|
+
|
|
44
|
+
response = @public_ip.create(reverse_dns: data['reverse_dns'])
|
|
45
|
+
|
|
46
|
+
# Assertions
|
|
47
|
+
assert_equal response['reverse_dns'], 'example.com'
|
|
48
|
+
|
|
49
|
+
# Clear out stubs
|
|
50
|
+
Excon.stubs.clear
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def test_get
|
|
56
|
+
|
|
57
|
+
# Read in mock JSON
|
|
58
|
+
file = File.read('mock-api/get-public-ip.json')
|
|
59
|
+
data = JSON.parse(file)
|
|
60
|
+
|
|
61
|
+
# Create stub and perform call
|
|
62
|
+
Excon.stub({:method => :get, :path => "/v1/public_ips/#{data['id']}"},
|
|
63
|
+
{:body => JSON.generate(data), :status => 200})
|
|
64
|
+
|
|
65
|
+
response = @public_ip.get(ip_id: data['id'])
|
|
66
|
+
|
|
67
|
+
# Assertions
|
|
68
|
+
assert_equal response['id'], data['id']
|
|
69
|
+
|
|
70
|
+
# Clear out stubs
|
|
71
|
+
Excon.stubs.clear
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def test_modify
|
|
77
|
+
|
|
78
|
+
# Read in mock JSON
|
|
79
|
+
file = File.read('mock-api/modify-public-ip.json')
|
|
80
|
+
data = JSON.parse(file)
|
|
81
|
+
|
|
82
|
+
# Create stub and perform call
|
|
83
|
+
Excon.stub({:method => :put, :path => "/v1/public_ips/#{data['id']}"},
|
|
84
|
+
{:body => JSON.generate(data), :status => 202})
|
|
85
|
+
|
|
86
|
+
response = @public_ip.modify(ip_id: data['id'], reverse_dns: 'example.es')
|
|
87
|
+
|
|
88
|
+
# Assertions
|
|
89
|
+
assert_equal response['reverse_dns'], 'example.es'
|
|
90
|
+
|
|
91
|
+
# Clear out stubs
|
|
92
|
+
Excon.stubs.clear
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def test_delete
|
|
98
|
+
|
|
99
|
+
# Read in mock JSON
|
|
100
|
+
file = File.read('mock-api/delete-public-ip.json')
|
|
101
|
+
data = JSON.parse(file)
|
|
102
|
+
|
|
103
|
+
# Create stub and perform call
|
|
104
|
+
Excon.stub({:method => :delete, :path => "/v1/public_ips/#{data['id']}"},
|
|
105
|
+
{:body => JSON.generate(data), :status => 202})
|
|
106
|
+
|
|
107
|
+
response = @public_ip.delete(ip_id: data['id'])
|
|
108
|
+
|
|
109
|
+
# Assertions
|
|
110
|
+
assert_equal response['state'], 'CONFIGURING'
|
|
111
|
+
|
|
112
|
+
# Clear out stubs
|
|
113
|
+
Excon.stubs.clear
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
end
|
|
@@ -0,0 +1,929 @@
|
|
|
1
|
+
require_relative '../lib/oneandone'
|
|
2
|
+
require 'minitest/autorun'
|
|
3
|
+
|
|
4
|
+
class TestServer < Minitest::Test
|
|
5
|
+
def setup
|
|
6
|
+
|
|
7
|
+
OneAndOne.start('TEST-API-KEY')
|
|
8
|
+
@server = OneAndOne::Server.new(test: true)
|
|
9
|
+
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_list
|
|
14
|
+
|
|
15
|
+
# Read in mock JSON
|
|
16
|
+
file = File.read('mock-api/list-servers.json')
|
|
17
|
+
data = JSON.parse(file)
|
|
18
|
+
|
|
19
|
+
# Create stub and perform call
|
|
20
|
+
Excon.stub({:method => :get, :path => '/v1/servers'},
|
|
21
|
+
{:body => JSON.generate(data), :status => 200})
|
|
22
|
+
|
|
23
|
+
response = @server.list
|
|
24
|
+
|
|
25
|
+
# Assertions
|
|
26
|
+
assert_equal response[0]['id'], data[0]['id']
|
|
27
|
+
|
|
28
|
+
# Clear out stubs
|
|
29
|
+
Excon.stubs.clear
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_create
|
|
35
|
+
|
|
36
|
+
# Read in mock JSON
|
|
37
|
+
file = File.read('mock-api/create-server.json')
|
|
38
|
+
data = JSON.parse(file)
|
|
39
|
+
|
|
40
|
+
# Create stub and perform call
|
|
41
|
+
Excon.stub({:method => :post, :path => '/v1/servers'},
|
|
42
|
+
{:body => JSON.generate(data), :status => 202})
|
|
43
|
+
|
|
44
|
+
hdd1 = {
|
|
45
|
+
'size' => 120,
|
|
46
|
+
'is_main' => true
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
hdds = [hdd1]
|
|
50
|
+
|
|
51
|
+
response = @server.create(name: 'My server', vcore: 1,
|
|
52
|
+
cores_per_processor: 1, ram: 1, appliance_id: '<IMAGE-ID>', hdds: hdds,
|
|
53
|
+
datacenter_id: 'D0F6D8C8ED29D3036F94C27BBB7BAD36', rsa_key: '<PUB-KEY>')
|
|
54
|
+
|
|
55
|
+
# Assertions
|
|
56
|
+
assert_equal response['name'], 'My server'
|
|
57
|
+
assert_equal response['datacenter']['country_code'], 'US'
|
|
58
|
+
|
|
59
|
+
# Clear out stubs
|
|
60
|
+
Excon.stubs.clear
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_list_fixed
|
|
66
|
+
|
|
67
|
+
# Read in mock JSON
|
|
68
|
+
file = File.read('mock-api/fixed-server-flavors.json')
|
|
69
|
+
data = JSON.parse(file)
|
|
70
|
+
|
|
71
|
+
# Create stub and perform call
|
|
72
|
+
Excon.stub({:method => :get, :path => '/v1/servers/fixed_instance_sizes'},
|
|
73
|
+
{:body => JSON.generate(data), :status => 200})
|
|
74
|
+
|
|
75
|
+
response = @server.list_fixed
|
|
76
|
+
|
|
77
|
+
# Assertions
|
|
78
|
+
assert_equal response[0]['id'], data[0]['id']
|
|
79
|
+
|
|
80
|
+
# Clear out stubs
|
|
81
|
+
Excon.stubs.clear
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_get_fixed
|
|
87
|
+
|
|
88
|
+
# Read in mock JSON
|
|
89
|
+
file = File.read('mock-api/get-fixed-server.json')
|
|
90
|
+
data = JSON.parse(file)
|
|
91
|
+
|
|
92
|
+
# Create stub and perform call
|
|
93
|
+
Excon.stub({:method => :get,
|
|
94
|
+
:path => "/v1/servers/fixed_instance_sizes/#{data['id']}"},
|
|
95
|
+
{:body => JSON.generate(data), :status => 200})
|
|
96
|
+
|
|
97
|
+
response = @server.get_fixed(fixed_instance_id: data['id'])
|
|
98
|
+
|
|
99
|
+
# Assertions
|
|
100
|
+
assert_equal response['id'], data['id']
|
|
101
|
+
|
|
102
|
+
# Clear out stubs
|
|
103
|
+
Excon.stubs.clear
|
|
104
|
+
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def test_get
|
|
109
|
+
|
|
110
|
+
# Read in mock JSON
|
|
111
|
+
file = File.read('mock-api/get-server.json')
|
|
112
|
+
data = JSON.parse(file)
|
|
113
|
+
|
|
114
|
+
# Create stub and perform call
|
|
115
|
+
Excon.stub({:method => :get,
|
|
116
|
+
:path => "/v1/servers/#{data['id']}"},
|
|
117
|
+
{:body => JSON.generate(data), :status => 200})
|
|
118
|
+
|
|
119
|
+
response = @server.get(server_id: data['id'])
|
|
120
|
+
|
|
121
|
+
# Assertions
|
|
122
|
+
assert_equal response['id'], data['id']
|
|
123
|
+
|
|
124
|
+
# Clear out stubs
|
|
125
|
+
Excon.stubs.clear
|
|
126
|
+
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def test_modify
|
|
131
|
+
|
|
132
|
+
# Read in mock JSON
|
|
133
|
+
file = File.read('mock-api/modify-server.json')
|
|
134
|
+
data = JSON.parse(file)
|
|
135
|
+
|
|
136
|
+
# Create stub and perform call
|
|
137
|
+
Excon.stub({:method => :put, :path => "/v1/servers/#{data['id']}"},
|
|
138
|
+
{:body => JSON.generate(data), :status => 200})
|
|
139
|
+
|
|
140
|
+
response = @server.modify(server_id: data['id'], name: data['name'])
|
|
141
|
+
|
|
142
|
+
# Assertions
|
|
143
|
+
assert_equal response['name'], data['name']
|
|
144
|
+
|
|
145
|
+
# Clear out stubs
|
|
146
|
+
Excon.stubs.clear
|
|
147
|
+
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def test_delete
|
|
152
|
+
|
|
153
|
+
# Read in mock JSON
|
|
154
|
+
file = File.read('mock-api/delete-server.json')
|
|
155
|
+
data = JSON.parse(file)
|
|
156
|
+
|
|
157
|
+
# Create stub and perform call
|
|
158
|
+
Excon.stub({:method => :delete, :path => "/v1/servers/#{data['id']}"},
|
|
159
|
+
{:body => JSON.generate(data), :status => 202})
|
|
160
|
+
|
|
161
|
+
response = @server.delete(server_id: data['id'])
|
|
162
|
+
|
|
163
|
+
# Assertions
|
|
164
|
+
assert_equal response['name'], data['name']
|
|
165
|
+
assert_equal response['status']['state'], 'REMOVING'
|
|
166
|
+
|
|
167
|
+
# Clear out stubs
|
|
168
|
+
Excon.stubs.clear
|
|
169
|
+
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def test_hardware
|
|
174
|
+
|
|
175
|
+
# Read in mock JSON
|
|
176
|
+
file = File.read('mock-api/get-hardware.json')
|
|
177
|
+
data = JSON.parse(file)
|
|
178
|
+
|
|
179
|
+
# Create stub and perform call
|
|
180
|
+
Excon.stub({:method => :get,
|
|
181
|
+
:path => "/v1/servers/#{data['id']}/hardware"},
|
|
182
|
+
{:body => JSON.generate(data), :status => 200})
|
|
183
|
+
|
|
184
|
+
response = @server.hardware(server_id: data['id'])
|
|
185
|
+
|
|
186
|
+
# Assertions
|
|
187
|
+
assert_equal response['id'], data['id']
|
|
188
|
+
assert_equal response['vcore'], 1
|
|
189
|
+
|
|
190
|
+
# Clear out stubs
|
|
191
|
+
Excon.stubs.clear
|
|
192
|
+
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def test_modify_hardware
|
|
197
|
+
|
|
198
|
+
# Read in mock JSON
|
|
199
|
+
file = File.read('mock-api/modify-server-hardware.json')
|
|
200
|
+
data = JSON.parse(file)
|
|
201
|
+
|
|
202
|
+
# Create stub and perform call
|
|
203
|
+
Excon.stub({:method => :put, :path => "/v1/servers/#{data['id']}/hardware"},
|
|
204
|
+
{:body => JSON.generate(data), :status => 202})
|
|
205
|
+
|
|
206
|
+
response = @server.modify_hardware(server_id: data['id'],
|
|
207
|
+
vcore: data['hardware']['vcore'])
|
|
208
|
+
|
|
209
|
+
# Assertions
|
|
210
|
+
assert_equal response['hardware']['vcore'], data['hardware']['vcore']
|
|
211
|
+
|
|
212
|
+
# Clear out stubs
|
|
213
|
+
Excon.stubs.clear
|
|
214
|
+
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def test_hdds
|
|
219
|
+
|
|
220
|
+
# Read in mock JSON
|
|
221
|
+
file = File.read('mock-api/list-hdds.json')
|
|
222
|
+
data = JSON.parse(file)
|
|
223
|
+
|
|
224
|
+
# Create stub and perform call
|
|
225
|
+
Excon.stub({:method => :get,
|
|
226
|
+
:path => "/v1/servers/SERVER-ID/hardware/hdds"},
|
|
227
|
+
{:body => JSON.generate(data), :status => 200})
|
|
228
|
+
|
|
229
|
+
response = @server.hdds(server_id: 'SERVER-ID')
|
|
230
|
+
|
|
231
|
+
# Assertions
|
|
232
|
+
assert_equal response[0]['id'], data[0]['id']
|
|
233
|
+
|
|
234
|
+
# Clear out stubs
|
|
235
|
+
Excon.stubs.clear
|
|
236
|
+
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def test_add_hdds
|
|
241
|
+
|
|
242
|
+
# Read in mock JSON
|
|
243
|
+
file = File.read('mock-api/add-hdd.json')
|
|
244
|
+
data = JSON.parse(file)
|
|
245
|
+
|
|
246
|
+
# Create stub and perform call
|
|
247
|
+
Excon.stub({:method => :post,
|
|
248
|
+
:path => "/v1/servers/#{data['id']}/hardware/hdds"},
|
|
249
|
+
{:body => JSON.generate(data), :status => 202})
|
|
250
|
+
|
|
251
|
+
hdd2 = {
|
|
252
|
+
'size' => 20,
|
|
253
|
+
'is_main' => false
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
hdds = [hdd2]
|
|
257
|
+
|
|
258
|
+
response = @server.add_hdds(server_id: data['id'], hdds: hdds)
|
|
259
|
+
|
|
260
|
+
# Assertions
|
|
261
|
+
assert_equal response['hardware']['hdds'][1]['size'], 20
|
|
262
|
+
|
|
263
|
+
# Clear out stubs
|
|
264
|
+
Excon.stubs.clear
|
|
265
|
+
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def test_get_hdd
|
|
270
|
+
|
|
271
|
+
# Read in mock JSON
|
|
272
|
+
file = File.read('mock-api/get-hdd.json')
|
|
273
|
+
data = JSON.parse(file)
|
|
274
|
+
|
|
275
|
+
# Create stub and perform call
|
|
276
|
+
Excon.stub({:method => :get,
|
|
277
|
+
:path => "/v1/servers/SERVER-ID/hardware/hdds/#{data['id']}"},
|
|
278
|
+
{:body => JSON.generate(data), :status => 200})
|
|
279
|
+
|
|
280
|
+
response = @server.get_hdd(server_id: 'SERVER-ID', hdd_id: data['id'])
|
|
281
|
+
|
|
282
|
+
# Assertions
|
|
283
|
+
assert_equal response['id'], data['id']
|
|
284
|
+
|
|
285
|
+
# Clear out stubs
|
|
286
|
+
Excon.stubs.clear
|
|
287
|
+
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
def test_modify_hdd
|
|
292
|
+
|
|
293
|
+
# Read in mock JSON
|
|
294
|
+
file = File.read('mock-api/modify-server-hdd.json')
|
|
295
|
+
data = JSON.parse(file)
|
|
296
|
+
|
|
297
|
+
# Create stub and perform call
|
|
298
|
+
Excon.stub({:method => :put,
|
|
299
|
+
:path => "/v1/servers/#{data['id']}/hardware/hdds/#{data['hardware']['hdds'][1]['id']}"},
|
|
300
|
+
{:body => JSON.generate(data), :status => 202})
|
|
301
|
+
|
|
302
|
+
response = @server.modify_hdd(server_id: data['id'],
|
|
303
|
+
hdd_id: data['hardware']['hdds'][1]['id'], size: 20)
|
|
304
|
+
|
|
305
|
+
# Assertions
|
|
306
|
+
assert_equal response['hardware']['hdds'][1]['size'], 20
|
|
307
|
+
|
|
308
|
+
# Clear out stubs
|
|
309
|
+
Excon.stubs.clear
|
|
310
|
+
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def test_delete_hdd
|
|
315
|
+
|
|
316
|
+
# Read in mock JSON
|
|
317
|
+
file = File.read('mock-api/remove-hdd.json')
|
|
318
|
+
data = JSON.parse(file)
|
|
319
|
+
|
|
320
|
+
# Create stub and perform call
|
|
321
|
+
Excon.stub({:method => :delete,
|
|
322
|
+
:path => "/v1/servers/#{data['id']}/hardware/hdds/#{data['hardware']['hdds'][1]['id']}"},
|
|
323
|
+
{:body => JSON.generate(data), :status => 202})
|
|
324
|
+
|
|
325
|
+
response = @server.delete_hdd(server_id: data['id'],
|
|
326
|
+
hdd_id: data['hardware']['hdds'][1]['id'])
|
|
327
|
+
|
|
328
|
+
# Assertions
|
|
329
|
+
assert_equal response['status']['state'], 'CONFIGURING'
|
|
330
|
+
|
|
331
|
+
# Clear out stubs
|
|
332
|
+
Excon.stubs.clear
|
|
333
|
+
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
def test_image
|
|
338
|
+
|
|
339
|
+
# Read in mock JSON
|
|
340
|
+
file = File.read('mock-api/get-server-image.json')
|
|
341
|
+
data = JSON.parse(file)
|
|
342
|
+
|
|
343
|
+
# Create stub and perform call
|
|
344
|
+
Excon.stub({:method => :get,
|
|
345
|
+
:path => "/v1/servers/SERVER-ID/image"},
|
|
346
|
+
{:body => JSON.generate(data), :status => 200})
|
|
347
|
+
|
|
348
|
+
response = @server.image(server_id: 'SERVER-ID')
|
|
349
|
+
|
|
350
|
+
# Assertions
|
|
351
|
+
assert_equal response['name'], 'centos7-64std'
|
|
352
|
+
|
|
353
|
+
# Clear out stubs
|
|
354
|
+
Excon.stubs.clear
|
|
355
|
+
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def test_install_image
|
|
360
|
+
|
|
361
|
+
# Read in mock JSON
|
|
362
|
+
file = File.read('mock-api/reinstall-image.json')
|
|
363
|
+
data = JSON.parse(file)
|
|
364
|
+
|
|
365
|
+
# Create stub and perform call
|
|
366
|
+
Excon.stub({:method => :put,
|
|
367
|
+
:path => "/v1/servers/#{data['id']}/image"},
|
|
368
|
+
{:body => JSON.generate(data), :status => 202})
|
|
369
|
+
|
|
370
|
+
response = @server.install_image(server_id: data['id'],
|
|
371
|
+
image_id: data['image']['id'])
|
|
372
|
+
|
|
373
|
+
# Assertions
|
|
374
|
+
assert_equal response['image']['name'], 'centos7-64std'
|
|
375
|
+
|
|
376
|
+
# Clear out stubs
|
|
377
|
+
Excon.stubs.clear
|
|
378
|
+
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
def test_ips
|
|
383
|
+
|
|
384
|
+
# Read in mock JSON
|
|
385
|
+
file = File.read('mock-api/list-server-ips.json')
|
|
386
|
+
data = JSON.parse(file)
|
|
387
|
+
|
|
388
|
+
# Create stub and perform call
|
|
389
|
+
Excon.stub({:method => :get,
|
|
390
|
+
:path => "/v1/servers/SERVER-ID/ips"},
|
|
391
|
+
{:body => JSON.generate(data), :status => 200})
|
|
392
|
+
|
|
393
|
+
response = @server.ips(server_id: 'SERVER-ID')
|
|
394
|
+
|
|
395
|
+
# Assertions
|
|
396
|
+
assert_equal response[0]['ip'], '10.5.135.140'
|
|
397
|
+
|
|
398
|
+
# Clear out stubs
|
|
399
|
+
Excon.stubs.clear
|
|
400
|
+
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
def test_add_ip
|
|
405
|
+
|
|
406
|
+
# Read in mock JSON
|
|
407
|
+
file = File.read('mock-api/add-server-ip.json')
|
|
408
|
+
data = JSON.parse(file)
|
|
409
|
+
|
|
410
|
+
# Create stub and perform call
|
|
411
|
+
Excon.stub({:method => :post,
|
|
412
|
+
:path => "/v1/servers/#{data['id']}/ips"},
|
|
413
|
+
{:body => JSON.generate(data), :status => 201})
|
|
414
|
+
|
|
415
|
+
response = @server.add_ip(server_id: data['id'])
|
|
416
|
+
|
|
417
|
+
# Assertions
|
|
418
|
+
assert_equal response['ips'][1]['ip'], '10.4.141.161'
|
|
419
|
+
|
|
420
|
+
# Clear out stubs
|
|
421
|
+
Excon.stubs.clear
|
|
422
|
+
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
def test_ip
|
|
427
|
+
|
|
428
|
+
# Read in mock JSON
|
|
429
|
+
file = File.read('mock-api/get-server-ip.json')
|
|
430
|
+
data = JSON.parse(file)
|
|
431
|
+
|
|
432
|
+
# Create stub and perform call
|
|
433
|
+
Excon.stub({:method => :get,
|
|
434
|
+
:path => "/v1/servers/SERVER-ID/ips/#{data['id']}"},
|
|
435
|
+
{:body => JSON.generate(data), :status => 200})
|
|
436
|
+
|
|
437
|
+
response = @server.ip(server_id: 'SERVER-ID', ip_id: data['id'])
|
|
438
|
+
|
|
439
|
+
# Assertions
|
|
440
|
+
assert_equal response['id'], data['id']
|
|
441
|
+
|
|
442
|
+
# Clear out stubs
|
|
443
|
+
Excon.stubs.clear
|
|
444
|
+
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
def test_release_ip
|
|
449
|
+
|
|
450
|
+
# Read in mock JSON
|
|
451
|
+
file = File.read('mock-api/remove-server-ip.json')
|
|
452
|
+
data = JSON.parse(file)
|
|
453
|
+
|
|
454
|
+
# Create stub and perform call
|
|
455
|
+
Excon.stub({:method => :delete,
|
|
456
|
+
:path => "/v1/servers/#{data['id']}/ips/#{data['ips'][0]['id']}"},
|
|
457
|
+
{:body => JSON.generate(data), :status => 202})
|
|
458
|
+
|
|
459
|
+
response = @server.release_ip(server_id: data['id'],
|
|
460
|
+
ip_id: data['ips'][0]['id'])
|
|
461
|
+
|
|
462
|
+
# Assertions
|
|
463
|
+
assert_equal response['ips'][0]['id'], data['ips'][0]['id']
|
|
464
|
+
|
|
465
|
+
# Clear out stubs
|
|
466
|
+
Excon.stubs.clear
|
|
467
|
+
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
def test_add_firewall
|
|
472
|
+
|
|
473
|
+
# Read in mock JSON
|
|
474
|
+
file = File.read('mock-api/add-firewall.json')
|
|
475
|
+
data = JSON.parse(file)
|
|
476
|
+
|
|
477
|
+
# Create stub and perform call
|
|
478
|
+
Excon.stub({:method => :put,
|
|
479
|
+
:path => "/v1/servers/#{data['id']}/ips/#{data['ips'][0]['id']}/firewall_policy"},
|
|
480
|
+
{:body => JSON.generate(data), :status => 202})
|
|
481
|
+
|
|
482
|
+
response = @server.add_firewall(server_id: data['id'],
|
|
483
|
+
ip_id: data['ips'][0]['id'],
|
|
484
|
+
firewall_id: data['ips'][0]['firewall_policy']['id'])
|
|
485
|
+
|
|
486
|
+
# Assertions
|
|
487
|
+
assert_equal response['ips'][0]['firewall_policy']['id'],
|
|
488
|
+
data['ips'][0]['firewall_policy']['id']
|
|
489
|
+
|
|
490
|
+
# Clear out stubs
|
|
491
|
+
Excon.stubs.clear
|
|
492
|
+
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
def test_firewall
|
|
497
|
+
|
|
498
|
+
# Read in mock JSON
|
|
499
|
+
file = File.read('mock-api/get-server-ip-fp.json')
|
|
500
|
+
data = JSON.parse(file)
|
|
501
|
+
|
|
502
|
+
# Create stub and perform call
|
|
503
|
+
Excon.stub({:method => :get,
|
|
504
|
+
:path => "/v1/servers/SERVER-ID/ips/IP-ID/firewall_policy"},
|
|
505
|
+
{:body => JSON.generate(data), :status => 200})
|
|
506
|
+
|
|
507
|
+
response = @server.firewall(server_id: 'SERVER-ID',
|
|
508
|
+
ip_id: 'IP-ID')
|
|
509
|
+
|
|
510
|
+
# Assertions
|
|
511
|
+
assert_equal response['id'], '3C4F21EDFEEDD6ABB728EA5CE684E1AF'
|
|
512
|
+
|
|
513
|
+
# Clear out stubs
|
|
514
|
+
Excon.stubs.clear
|
|
515
|
+
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
def test_remove_firewall
|
|
520
|
+
|
|
521
|
+
# Read in mock JSON
|
|
522
|
+
file = File.read('mock-api/remove-ip-fp.json')
|
|
523
|
+
data = JSON.parse(file)
|
|
524
|
+
|
|
525
|
+
# Create stub and perform call
|
|
526
|
+
Excon.stub({:method => :delete,
|
|
527
|
+
:path => "/v1/servers/#{data['id']}/ips/IP-ID/firewall_policy"},
|
|
528
|
+
{:body => JSON.generate(data), :status => 202})
|
|
529
|
+
|
|
530
|
+
response = @server.remove_firewall(server_id: data['id'],
|
|
531
|
+
ip_id: 'IP-ID')
|
|
532
|
+
|
|
533
|
+
# Assertions
|
|
534
|
+
assert_equal response['state'], 'CONFIGURING'
|
|
535
|
+
|
|
536
|
+
# Clear out stubs
|
|
537
|
+
Excon.stubs.clear
|
|
538
|
+
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
def test_load_balancers
|
|
543
|
+
|
|
544
|
+
# Read in mock JSON
|
|
545
|
+
file = File.read('mock-api/list-server-lbs.json')
|
|
546
|
+
data = JSON.parse(file)
|
|
547
|
+
|
|
548
|
+
# Create stub and perform call
|
|
549
|
+
Excon.stub({:method => :get,
|
|
550
|
+
:path => "/v1/servers/SERVER-ID/ips/IP-ID/load_balancers"},
|
|
551
|
+
{:body => JSON.generate(data), :status => 200})
|
|
552
|
+
|
|
553
|
+
response = @server.load_balancers(server_id: 'SERVER-ID',
|
|
554
|
+
ip_id: 'IP-ID')
|
|
555
|
+
|
|
556
|
+
# Assertions
|
|
557
|
+
assert_equal response[0]['id'], '37E2FDEB2945990CEE4B7927FB1ED425'
|
|
558
|
+
|
|
559
|
+
# Clear out stubs
|
|
560
|
+
Excon.stubs.clear
|
|
561
|
+
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
def test_add_load_balancer
|
|
566
|
+
|
|
567
|
+
# Read in mock JSON
|
|
568
|
+
file = File.read('mock-api/add-lb.json')
|
|
569
|
+
data = JSON.parse(file)
|
|
570
|
+
|
|
571
|
+
# Create stub and perform call
|
|
572
|
+
Excon.stub({:method => :post,
|
|
573
|
+
:path => "/v1/servers/#{data['id']}/ips/#{data['ips'][0]['id']}/load_balancers"},
|
|
574
|
+
{:body => JSON.generate(data), :status => 202})
|
|
575
|
+
|
|
576
|
+
response = @server.add_load_balancer(server_id: data['id'],
|
|
577
|
+
ip_id: data['ips'][0]['id'],
|
|
578
|
+
load_balancer_id: data['ips'][0]['load_balancers'][0]['id'])
|
|
579
|
+
|
|
580
|
+
# Assertions
|
|
581
|
+
assert_equal response['ips'][0]['load_balancers'][0]['id'],
|
|
582
|
+
data['ips'][0]['load_balancers'][0]['id']
|
|
583
|
+
|
|
584
|
+
# Clear out stubs
|
|
585
|
+
Excon.stubs.clear
|
|
586
|
+
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
def test_remove_load_balancer
|
|
591
|
+
|
|
592
|
+
# Read in mock JSON
|
|
593
|
+
file = File.read('mock-api/remove-lb.json')
|
|
594
|
+
data = JSON.parse(file)
|
|
595
|
+
|
|
596
|
+
# Create stub and perform call
|
|
597
|
+
Excon.stub({:method => :delete,
|
|
598
|
+
:path => "/v1/servers/#{data['id']}/ips/#{data['ips'][0]['id']}/load_balancers/LOAD-BALANCER-ID"},
|
|
599
|
+
{:body => JSON.generate(data), :status => 202})
|
|
600
|
+
|
|
601
|
+
response = @server.remove_load_balancer(server_id: data['id'],
|
|
602
|
+
ip_id: data['ips'][0]['id'], load_balancer_id: 'LOAD-BALANCER-ID')
|
|
603
|
+
|
|
604
|
+
# Assertions
|
|
605
|
+
assert_equal response['ips'][0]['load_balancers'], []
|
|
606
|
+
|
|
607
|
+
# Clear out stubs
|
|
608
|
+
Excon.stubs.clear
|
|
609
|
+
|
|
610
|
+
end
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
def test_status
|
|
614
|
+
|
|
615
|
+
# Read in mock JSON
|
|
616
|
+
file = File.read('mock-api/get-server-status.json')
|
|
617
|
+
data = JSON.parse(file)
|
|
618
|
+
|
|
619
|
+
# Create stub and perform call
|
|
620
|
+
Excon.stub({:method => :get,
|
|
621
|
+
:path => "/v1/servers/SERVER-ID/status"},
|
|
622
|
+
{:body => JSON.generate(data), :status => 200})
|
|
623
|
+
|
|
624
|
+
response = @server.status(server_id: 'SERVER-ID')
|
|
625
|
+
|
|
626
|
+
# Assertions
|
|
627
|
+
assert_equal response['state'], 'POWERED_ON'
|
|
628
|
+
|
|
629
|
+
# Clear out stubs
|
|
630
|
+
Excon.stubs.clear
|
|
631
|
+
|
|
632
|
+
end
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
def test_change_status
|
|
636
|
+
|
|
637
|
+
# Read in mock JSON
|
|
638
|
+
file = File.read('mock-api/change-server-status.json')
|
|
639
|
+
data = JSON.parse(file)
|
|
640
|
+
|
|
641
|
+
# Create stub and perform call
|
|
642
|
+
Excon.stub({:method => :put,
|
|
643
|
+
:path => "/v1/servers/#{data['id']}/status/action"},
|
|
644
|
+
{:body => JSON.generate(data), :status => 202})
|
|
645
|
+
|
|
646
|
+
response = @server.change_status(server_id: data['id'],
|
|
647
|
+
action: 'POWER_OFF',
|
|
648
|
+
method: 'SOFTWARE')
|
|
649
|
+
|
|
650
|
+
# Assertions
|
|
651
|
+
assert_equal response['status']['state'], 'POWERING_OFF'
|
|
652
|
+
|
|
653
|
+
# Clear out stubs
|
|
654
|
+
Excon.stubs.clear
|
|
655
|
+
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
def test_dvd
|
|
660
|
+
|
|
661
|
+
# Read in mock JSON
|
|
662
|
+
file = File.read('mock-api/get-server-dvd.json')
|
|
663
|
+
data = JSON.parse(file)
|
|
664
|
+
|
|
665
|
+
# Create stub and perform call
|
|
666
|
+
Excon.stub({:method => :get,
|
|
667
|
+
:path => "/v1/servers/SERVER-ID/dvd"},
|
|
668
|
+
{:body => JSON.generate(data), :status => 200})
|
|
669
|
+
|
|
670
|
+
response = @server.dvd(server_id: 'SERVER-ID')
|
|
671
|
+
|
|
672
|
+
# Assertions
|
|
673
|
+
assert_equal response['name'], 'Windows 2012 - 64 bits'
|
|
674
|
+
|
|
675
|
+
# Clear out stubs
|
|
676
|
+
Excon.stubs.clear
|
|
677
|
+
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
def test_load_dvd
|
|
682
|
+
|
|
683
|
+
# Read in mock JSON
|
|
684
|
+
file = File.read('mock-api/load-dvd.json')
|
|
685
|
+
data = JSON.parse(file)
|
|
686
|
+
|
|
687
|
+
# Create stub and perform call
|
|
688
|
+
Excon.stub({:method => :put,
|
|
689
|
+
:path => "/v1/servers/#{data['id']}/dvd"},
|
|
690
|
+
{:body => JSON.generate(data), :status => 202})
|
|
691
|
+
|
|
692
|
+
response = @server.load_dvd(server_id: data['id'], dvd_id: 'DVD-ID')
|
|
693
|
+
|
|
694
|
+
# Assertions
|
|
695
|
+
assert_equal response['dvd'], nil
|
|
696
|
+
|
|
697
|
+
# Clear out stubs
|
|
698
|
+
Excon.stubs.clear
|
|
699
|
+
|
|
700
|
+
end
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
def test_eject_dvd
|
|
704
|
+
|
|
705
|
+
# Read in mock JSON
|
|
706
|
+
file = File.read('mock-api/eject-dvd.json')
|
|
707
|
+
data = JSON.parse(file)
|
|
708
|
+
|
|
709
|
+
# Create stub and perform call
|
|
710
|
+
Excon.stub({:method => :delete,
|
|
711
|
+
:path => "/v1/servers/#{data['id']}/dvd"},
|
|
712
|
+
{:body => JSON.generate(data), :status => 202})
|
|
713
|
+
|
|
714
|
+
response = @server.eject_dvd(server_id: data['id'])
|
|
715
|
+
|
|
716
|
+
# Assertions
|
|
717
|
+
assert_equal response['status']['state'], 'CONFIGURING'
|
|
718
|
+
|
|
719
|
+
# Clear out stubs
|
|
720
|
+
Excon.stubs.clear
|
|
721
|
+
|
|
722
|
+
end
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
def test_private_networks
|
|
726
|
+
|
|
727
|
+
# Read in mock JSON
|
|
728
|
+
file = File.read('mock-api/list-server-pns.json')
|
|
729
|
+
data = JSON.parse(file)
|
|
730
|
+
|
|
731
|
+
# Create stub and perform call
|
|
732
|
+
Excon.stub({:method => :get,
|
|
733
|
+
:path => "/v1/servers/SERVER-ID/private_networks"},
|
|
734
|
+
{:body => JSON.generate(data), :status => 200})
|
|
735
|
+
|
|
736
|
+
response = @server.private_networks(server_id: 'SERVER-ID')
|
|
737
|
+
|
|
738
|
+
# Assertions
|
|
739
|
+
assert_equal response[0]['name'], 'New private network 1'
|
|
740
|
+
|
|
741
|
+
# Clear out stubs
|
|
742
|
+
Excon.stubs.clear
|
|
743
|
+
|
|
744
|
+
end
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
def test_private_network
|
|
748
|
+
|
|
749
|
+
# Read in mock JSON
|
|
750
|
+
file = File.read('mock-api/get-server-pn.json')
|
|
751
|
+
data = JSON.parse(file)
|
|
752
|
+
|
|
753
|
+
# Create stub and perform call
|
|
754
|
+
Excon.stub({:method => :get,
|
|
755
|
+
:path => "/v1/servers/#{data['servers'][0]['id']}/private_networks/#{data['id']}"},
|
|
756
|
+
{:body => JSON.generate(data), :status => 200})
|
|
757
|
+
|
|
758
|
+
response = @server.private_network(server_id: data['servers'][0]['id'],
|
|
759
|
+
private_network_id: data['id'])
|
|
760
|
+
|
|
761
|
+
# Assertions
|
|
762
|
+
assert_equal response['name'], 'New private network 1'
|
|
763
|
+
|
|
764
|
+
# Clear out stubs
|
|
765
|
+
Excon.stubs.clear
|
|
766
|
+
|
|
767
|
+
end
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
def test_add_private_network
|
|
771
|
+
|
|
772
|
+
# Read in mock JSON
|
|
773
|
+
file = File.read('mock-api/add-pn.json')
|
|
774
|
+
data = JSON.parse(file)
|
|
775
|
+
|
|
776
|
+
# Create stub and perform call
|
|
777
|
+
Excon.stub({:method => :post,
|
|
778
|
+
:path => "/v1/servers/#{data['id']}/private_networks"},
|
|
779
|
+
{:body => JSON.generate(data), :status => 202})
|
|
780
|
+
|
|
781
|
+
response = @server.add_private_network(server_id: data['id'],
|
|
782
|
+
private_network_id: 'PRIVATE-NETWORK-ID')
|
|
783
|
+
|
|
784
|
+
# Assertions
|
|
785
|
+
assert_equal response['private_networks'], nil
|
|
786
|
+
|
|
787
|
+
# Clear out stubs
|
|
788
|
+
Excon.stubs.clear
|
|
789
|
+
|
|
790
|
+
end
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
def test_remove_private_network
|
|
794
|
+
|
|
795
|
+
# Read in mock JSON
|
|
796
|
+
file = File.read('mock-api/remove-pn.json')
|
|
797
|
+
data = JSON.parse(file)
|
|
798
|
+
|
|
799
|
+
# Create stub and perform call
|
|
800
|
+
Excon.stub({:method => :delete,
|
|
801
|
+
:path => "/v1/servers/#{data['id']}/private_networks/PRIVATE-NETWORK-ID"},
|
|
802
|
+
{:body => JSON.generate(data), :status => 202})
|
|
803
|
+
|
|
804
|
+
response = @server.remove_private_network(server_id: data['id'],
|
|
805
|
+
private_network_id: 'PRIVATE-NETWORK-ID')
|
|
806
|
+
|
|
807
|
+
# Assertions
|
|
808
|
+
assert_equal response['private_networks'][0]['name'], 'New private network 1'
|
|
809
|
+
|
|
810
|
+
# Clear out stubs
|
|
811
|
+
Excon.stubs.clear
|
|
812
|
+
|
|
813
|
+
end
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
def test_create_snapshot
|
|
817
|
+
|
|
818
|
+
# Read in mock JSON
|
|
819
|
+
file = File.read('mock-api/create-snapshot.json')
|
|
820
|
+
data = JSON.parse(file)
|
|
821
|
+
|
|
822
|
+
# Create stub and perform call
|
|
823
|
+
Excon.stub({:method => :post,
|
|
824
|
+
:path => "/v1/servers/#{data['id']}/snapshots"},
|
|
825
|
+
{:body => JSON.generate(data), :status => 202})
|
|
826
|
+
|
|
827
|
+
response = @server.create_snapshot(server_id: data['id'])
|
|
828
|
+
|
|
829
|
+
# Assertions
|
|
830
|
+
assert_equal response['snapshot']['id'], data['snapshot']['id']
|
|
831
|
+
|
|
832
|
+
# Clear out stubs
|
|
833
|
+
Excon.stubs.clear
|
|
834
|
+
|
|
835
|
+
end
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
def test_snapshot
|
|
839
|
+
|
|
840
|
+
# Read in mock JSON
|
|
841
|
+
file = File.read('mock-api/list-snapshots.json')
|
|
842
|
+
data = JSON.parse(file)
|
|
843
|
+
|
|
844
|
+
# Create stub and perform call
|
|
845
|
+
Excon.stub({:method => :get,
|
|
846
|
+
:path => "/v1/servers/SERVER-ID/snapshots"},
|
|
847
|
+
{:body => JSON.generate(data), :status => 200})
|
|
848
|
+
|
|
849
|
+
response = @server.snapshot(server_id: 'SERVER-ID')
|
|
850
|
+
|
|
851
|
+
# Assertions
|
|
852
|
+
assert_equal response[0]['id'], 'B77E19E062D5818532EFF11C747BD104'
|
|
853
|
+
|
|
854
|
+
# Clear out stubs
|
|
855
|
+
Excon.stubs.clear
|
|
856
|
+
|
|
857
|
+
end
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
def test_restore_snapshot
|
|
861
|
+
|
|
862
|
+
# Read in mock JSON
|
|
863
|
+
file = File.read('mock-api/restore-snapshot.json')
|
|
864
|
+
data = JSON.parse(file)
|
|
865
|
+
|
|
866
|
+
# Create stub and perform call
|
|
867
|
+
Excon.stub({:method => :put,
|
|
868
|
+
:path => "/v1/servers/#{data['id']}/snapshots/#{data['snapshot']['id']}"},
|
|
869
|
+
{:body => JSON.generate(data), :status => 202})
|
|
870
|
+
|
|
871
|
+
response = @server.restore_snapshot(server_id: data['id'],
|
|
872
|
+
snapshot_id: data['snapshot']['id'])
|
|
873
|
+
|
|
874
|
+
# Assertions
|
|
875
|
+
assert_equal response['status']['state'], 'CONFIGURING'
|
|
876
|
+
|
|
877
|
+
# Clear out stubs
|
|
878
|
+
Excon.stubs.clear
|
|
879
|
+
|
|
880
|
+
end
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
def test_delete_snapshot
|
|
884
|
+
|
|
885
|
+
# Read in mock JSON
|
|
886
|
+
file = File.read('mock-api/delete-snapshot.json')
|
|
887
|
+
data = JSON.parse(file)
|
|
888
|
+
|
|
889
|
+
# Create stub and perform call
|
|
890
|
+
Excon.stub({:method => :delete,
|
|
891
|
+
:path => "/v1/servers/#{data['id']}/snapshots/#{data['snapshot']['id']}"},
|
|
892
|
+
{:body => JSON.generate(data), :status => 202})
|
|
893
|
+
|
|
894
|
+
response = @server.delete_snapshot(server_id: data['id'],
|
|
895
|
+
snapshot_id: data['snapshot']['id'])
|
|
896
|
+
|
|
897
|
+
# Assertions
|
|
898
|
+
assert_equal response['status']['state'], 'CONFIGURING'
|
|
899
|
+
|
|
900
|
+
# Clear out stubs
|
|
901
|
+
Excon.stubs.clear
|
|
902
|
+
|
|
903
|
+
end
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
def test_clone
|
|
907
|
+
|
|
908
|
+
# Read in mock JSON
|
|
909
|
+
file = File.read('mock-api/clone-server.json')
|
|
910
|
+
data = JSON.parse(file)
|
|
911
|
+
|
|
912
|
+
# Create stub and perform call
|
|
913
|
+
Excon.stub({:method => :post,
|
|
914
|
+
:path => "/v1/servers/SERVER-ID/clone"},
|
|
915
|
+
{:body => JSON.generate(data), :status => 202})
|
|
916
|
+
|
|
917
|
+
response = @server.clone(server_id: 'SERVER-ID',
|
|
918
|
+
name: data['name'])
|
|
919
|
+
|
|
920
|
+
# Assertions
|
|
921
|
+
assert_equal response['name'], data['name']
|
|
922
|
+
|
|
923
|
+
# Clear out stubs
|
|
924
|
+
Excon.stubs.clear
|
|
925
|
+
|
|
926
|
+
end
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
end
|