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.
Files changed (290) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/1and1-1.0.gem +0 -0
  4. data/1and1.gemspec +20 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +201 -0
  7. data/README.md +499 -0
  8. data/docs/reference.md +2447 -0
  9. data/examples/dvd_examples.rb +15 -0
  10. data/examples/example_app.rb +100 -0
  11. data/examples/firewall_examples.rb +137 -0
  12. data/examples/image_examples.rb +48 -0
  13. data/examples/load_balancer_examples.rb +145 -0
  14. data/examples/log_examples.rb +15 -0
  15. data/examples/monitoring_center_examples.rb +15 -0
  16. data/examples/monitoring_policy_examples.rb +343 -0
  17. data/examples/private_network_examples.rb +86 -0
  18. data/examples/public_ip_examples.rb +42 -0
  19. data/examples/role_examples.rb +113 -0
  20. data/examples/server_appliance_examples.rb +15 -0
  21. data/examples/server_examples.rb +438 -0
  22. data/examples/shared_storage_examples.rb +108 -0
  23. data/examples/usage_examples.rb +6 -0
  24. data/examples/user_examples.rb +113 -0
  25. data/examples/vpn_examples.rb +56 -0
  26. data/lib/1and1/datacenter.rb +73 -0
  27. data/lib/1and1/dvd.rb +73 -0
  28. data/lib/1and1/firewall.rb +427 -0
  29. data/lib/1and1/image.rb +231 -0
  30. data/lib/1and1/load_balancer.rb +448 -0
  31. data/lib/1and1/log.rb +77 -0
  32. data/lib/1and1/monitoring_center.rb +84 -0
  33. data/lib/1and1/monitoring_policy.rb +598 -0
  34. data/lib/1and1/oneandone.rb +57 -0
  35. data/lib/1and1/ping.rb +41 -0
  36. data/lib/1and1/ping_auth.rb +41 -0
  37. data/lib/1and1/pricing.rb +41 -0
  38. data/lib/1and1/private_network.rb +333 -0
  39. data/lib/1and1/public_ip.rb +192 -0
  40. data/lib/1and1/role.rb +381 -0
  41. data/lib/1and1/server.rb +1208 -0
  42. data/lib/1and1/server_appliance.rb +73 -0
  43. data/lib/1and1/shared_storage.rb +379 -0
  44. data/lib/1and1/usage.rb +58 -0
  45. data/lib/1and1/user.rb +374 -0
  46. data/lib/1and1/vpn.rb +249 -0
  47. data/lib/oneandone.rb +27 -0
  48. data/sphinx/Makefile +192 -0
  49. data/sphinx/_build/doctrees/dvds.doctree +0 -0
  50. data/sphinx/_build/doctrees/environment.pickle +0 -0
  51. data/sphinx/_build/doctrees/firewalls.doctree +0 -0
  52. data/sphinx/_build/doctrees/images.doctree +0 -0
  53. data/sphinx/_build/doctrees/index.doctree +0 -0
  54. data/sphinx/_build/doctrees/load_balancers.doctree +0 -0
  55. data/sphinx/_build/doctrees/logs.doctree +0 -0
  56. data/sphinx/_build/doctrees/monitoring_center.doctree +0 -0
  57. data/sphinx/_build/doctrees/monitoring_policies.doctree +0 -0
  58. data/sphinx/_build/doctrees/private_networks.doctree +0 -0
  59. data/sphinx/_build/doctrees/public_ips.doctree +0 -0
  60. data/sphinx/_build/doctrees/server_appliances.doctree +0 -0
  61. data/sphinx/_build/doctrees/servers.doctree +0 -0
  62. data/sphinx/_build/doctrees/shared_storages.doctree +0 -0
  63. data/sphinx/_build/doctrees/usages.doctree +0 -0
  64. data/sphinx/_build/doctrees/users.doctree +0 -0
  65. data/sphinx/_build/html/.buildinfo +4 -0
  66. data/sphinx/_build/html/_sources/dvds.txt +42 -0
  67. data/sphinx/_build/html/_sources/firewalls.txt +189 -0
  68. data/sphinx/_build/html/_sources/images.txt +101 -0
  69. data/sphinx/_build/html/_sources/index.txt +499 -0
  70. data/sphinx/_build/html/_sources/load_balancers.txt +231 -0
  71. data/sphinx/_build/html/_sources/logs.txt +55 -0
  72. data/sphinx/_build/html/_sources/monitoring_center.txt +55 -0
  73. data/sphinx/_build/html/_sources/monitoring_policies.txt +288 -0
  74. data/sphinx/_build/html/_sources/private_networks.txt +146 -0
  75. data/sphinx/_build/html/_sources/public_ips.txt +78 -0
  76. data/sphinx/_build/html/_sources/server_appliances.txt +42 -0
  77. data/sphinx/_build/html/_sources/servers.txt +630 -0
  78. data/sphinx/_build/html/_sources/shared_storages.txt +160 -0
  79. data/sphinx/_build/html/_sources/usages.txt +45 -0
  80. data/sphinx/_build/html/_sources/users.txt +172 -0
  81. data/sphinx/_build/html/_static/ajax-loader.gif +0 -0
  82. data/sphinx/_build/html/_static/alabaster.css +585 -0
  83. data/sphinx/_build/html/_static/basic.css +599 -0
  84. data/sphinx/_build/html/_static/comment-bright.png +0 -0
  85. data/sphinx/_build/html/_static/comment-close.png +0 -0
  86. data/sphinx/_build/html/_static/comment.png +0 -0
  87. data/sphinx/_build/html/_static/doctools.js +263 -0
  88. data/sphinx/_build/html/_static/down-pressed.png +0 -0
  89. data/sphinx/_build/html/_static/down.png +0 -0
  90. data/sphinx/_build/html/_static/file.png +0 -0
  91. data/sphinx/_build/html/_static/jquery-1.11.1.js +10308 -0
  92. data/sphinx/_build/html/_static/jquery.js +4 -0
  93. data/sphinx/_build/html/_static/minus.png +0 -0
  94. data/sphinx/_build/html/_static/plus.png +0 -0
  95. data/sphinx/_build/html/_static/pygments.css +63 -0
  96. data/sphinx/_build/html/_static/searchtools.js +651 -0
  97. data/sphinx/_build/html/_static/underscore-1.3.1.js +999 -0
  98. data/sphinx/_build/html/_static/underscore.js +31 -0
  99. data/sphinx/_build/html/_static/up-pressed.png +0 -0
  100. data/sphinx/_build/html/_static/up.png +0 -0
  101. data/sphinx/_build/html/_static/websupport.js +808 -0
  102. data/sphinx/_build/html/dvds.html +151 -0
  103. data/sphinx/_build/html/firewalls.html +397 -0
  104. data/sphinx/_build/html/genindex.html +114 -0
  105. data/sphinx/_build/html/images.html +236 -0
  106. data/sphinx/_build/html/index.html +571 -0
  107. data/sphinx/_build/html/load_balancers.html +409 -0
  108. data/sphinx/_build/html/logs.html +160 -0
  109. data/sphinx/_build/html/monitoring_center.html +160 -0
  110. data/sphinx/_build/html/monitoring_policies.html +530 -0
  111. data/sphinx/_build/html/objects.inv +0 -0
  112. data/sphinx/_build/html/private_networks.html +316 -0
  113. data/sphinx/_build/html/public_ips.html +215 -0
  114. data/sphinx/_build/html/rb-modindex.html +106 -0
  115. data/sphinx/_build/html/search.html +99 -0
  116. data/sphinx/_build/html/searchindex.js +1 -0
  117. data/sphinx/_build/html/server_appliances.html +153 -0
  118. data/sphinx/_build/html/servers.html +994 -0
  119. data/sphinx/_build/html/shared_storages.html +349 -0
  120. data/sphinx/_build/html/usages.html +140 -0
  121. data/sphinx/_build/html/users.html +363 -0
  122. data/sphinx/conf.py +287 -0
  123. data/sphinx/dvds.rst +42 -0
  124. data/sphinx/firewalls.rst +189 -0
  125. data/sphinx/images.rst +101 -0
  126. data/sphinx/index.rst +499 -0
  127. data/sphinx/load_balancers.rst +231 -0
  128. data/sphinx/logs.rst +55 -0
  129. data/sphinx/make.bat +263 -0
  130. data/sphinx/monitoring_center.rst +55 -0
  131. data/sphinx/monitoring_policies.rst +288 -0
  132. data/sphinx/private_networks.rst +146 -0
  133. data/sphinx/public_ips.rst +78 -0
  134. data/sphinx/server_appliances.rst +42 -0
  135. data/sphinx/servers.rst +630 -0
  136. data/sphinx/shared_storages.rst +160 -0
  137. data/sphinx/usages.rst +45 -0
  138. data/sphinx/users.rst +172 -0
  139. data/test/mock-api/add-firewall.json +66 -0
  140. data/test/mock-api/add-hdd.json +49 -0
  141. data/test/mock-api/add-lb.json +71 -0
  142. data/test/mock-api/add-new-ip.json +18 -0
  143. data/test/mock-api/add-pn.json +66 -0
  144. data/test/mock-api/add-port-mp.json +81 -0
  145. data/test/mock-api/add-process-mp.json +20 -0
  146. data/test/mock-api/add-rule-fp.json +33 -0
  147. data/test/mock-api/add-rule-lb.json +40 -0
  148. data/test/mock-api/add-server-ip.json +66 -0
  149. data/test/mock-api/add-server-mp.json +66 -0
  150. data/test/mock-api/assign-ip-fp.json +32 -0
  151. data/test/mock-api/assign-server-lb.json +39 -0
  152. data/test/mock-api/attach-server-pn.json +14 -0
  153. data/test/mock-api/attach-server-storage.json +24 -0
  154. data/test/mock-api/change-api-key.json +15 -0
  155. data/test/mock-api/change-password.json +5 -0
  156. data/test/mock-api/change-server-status.json +70 -0
  157. data/test/mock-api/clone-server.json +29 -0
  158. data/test/mock-api/create-fp.json +26 -0
  159. data/test/mock-api/create-image.json +30 -0
  160. data/test/mock-api/create-lb.json +33 -0
  161. data/test/mock-api/create-mp.json +81 -0
  162. data/test/mock-api/create-pn.json +11 -0
  163. data/test/mock-api/create-public-ip.json +10 -0
  164. data/test/mock-api/create-server.json +34 -0
  165. data/test/mock-api/create-snapshot.json +74 -0
  166. data/test/mock-api/create-storage.json +13 -0
  167. data/test/mock-api/create-user.json +14 -0
  168. data/test/mock-api/delete-fp.json +26 -0
  169. data/test/mock-api/delete-image.json +26 -0
  170. data/test/mock-api/delete-ip.json +15 -0
  171. data/test/mock-api/delete-lb.json +33 -0
  172. data/test/mock-api/delete-mp.json +71 -0
  173. data/test/mock-api/delete-pn.json +11 -0
  174. data/test/mock-api/delete-public-ip.json +10 -0
  175. data/test/mock-api/delete-rule-fp.json +26 -0
  176. data/test/mock-api/delete-server.json +50 -0
  177. data/test/mock-api/delete-snapshot.json +74 -0
  178. data/test/mock-api/delete-storage.json +24 -0
  179. data/test/mock-api/delete-user.json +15 -0
  180. data/test/mock-api/detach-server-lb.json +33 -0
  181. data/test/mock-api/detach-server-mp.json +65 -0
  182. data/test/mock-api/detach-server-storage.json +19 -0
  183. data/test/mock-api/edit-image.json +26 -0
  184. data/test/mock-api/eject-dvd.json +66 -0
  185. data/test/mock-api/fixed-server-flavors.json +70 -0
  186. data/test/mock-api/get-appliance.json +16 -0
  187. data/test/mock-api/get-dvd.json +9 -0
  188. data/test/mock-api/get-firewall.json +26 -0
  189. data/test/mock-api/get-fixed-server.json +17 -0
  190. data/test/mock-api/get-fp-rule.json +7 -0
  191. data/test/mock-api/get-hardware.json +13 -0
  192. data/test/mock-api/get-hdd.json +5 -0
  193. data/test/mock-api/get-image.json +26 -0
  194. data/test/mock-api/get-lb-rule.json +7 -0
  195. data/test/mock-api/get-lb-server.json +5 -0
  196. data/test/mock-api/get-load-balancer.json +33 -0
  197. data/test/mock-api/get-log.json +23 -0
  198. data/test/mock-api/get-monitoring-center.json +161 -0
  199. data/test/mock-api/get-mp-port.json +7 -0
  200. data/test/mock-api/get-mp-process.json +6 -0
  201. data/test/mock-api/get-mp-server.json +4 -0
  202. data/test/mock-api/get-mp.json +65 -0
  203. data/test/mock-api/get-pn-server.json +4 -0
  204. data/test/mock-api/get-private-network.json +20 -0
  205. data/test/mock-api/get-public-ip.json +10 -0
  206. data/test/mock-api/get-server-dvd.json +4 -0
  207. data/test/mock-api/get-server-image.json +4 -0
  208. data/test/mock-api/get-server-ip-fp.json +4 -0
  209. data/test/mock-api/get-server-ip.json +8 -0
  210. data/test/mock-api/get-server-pn.json +16 -0
  211. data/test/mock-api/get-server-status.json +4 -0
  212. data/test/mock-api/get-server-storage.json +5 -0
  213. data/test/mock-api/get-server.json +44 -0
  214. data/test/mock-api/get-storage.json +19 -0
  215. data/test/mock-api/get-usage.json +161 -0
  216. data/test/mock-api/get-user-api-key.json +3 -0
  217. data/test/mock-api/get-user-api.json +7 -0
  218. data/test/mock-api/get-user.json +15 -0
  219. data/test/mock-api/list-appliances.json +66 -0
  220. data/test/mock-api/list-credentials.json +5 -0
  221. data/test/mock-api/list-dvds.json +128 -0
  222. data/test/mock-api/list-firewalls.json +54 -0
  223. data/test/mock-api/list-fp-rules.json +16 -0
  224. data/test/mock-api/list-hdds.json +7 -0
  225. data/test/mock-api/list-images.json +54 -0
  226. data/test/mock-api/list-lb-rules.json +16 -0
  227. data/test/mock-api/list-lb-servers.json +12 -0
  228. data/test/mock-api/list-load-balancers.json +68 -0
  229. data/test/mock-api/list-logs.json +49 -0
  230. data/test/mock-api/list-monitoring-center-usages.json +90 -0
  231. data/test/mock-api/list-mp-ports.json +16 -0
  232. data/test/mock-api/list-mp-processes.json +14 -0
  233. data/test/mock-api/list-mp-servers.json +10 -0
  234. data/test/mock-api/list-mps.json +152 -0
  235. data/test/mock-api/list-pn-servers.json +10 -0
  236. data/test/mock-api/list-private-networks.json +24 -0
  237. data/test/mock-api/list-public-ips.json +44 -0
  238. data/test/mock-api/list-server-fps.json +4 -0
  239. data/test/mock-api/list-server-ips-fp.json +7 -0
  240. data/test/mock-api/list-server-ips.json +10 -0
  241. data/test/mock-api/list-server-lbs.json +6 -0
  242. data/test/mock-api/list-server-pns.json +6 -0
  243. data/test/mock-api/list-servers.json +66 -0
  244. data/test/mock-api/list-snapshots.json +7 -0
  245. data/test/mock-api/list-storages.json +47 -0
  246. data/test/mock-api/list-usages.json +144 -0
  247. data/test/mock-api/list-user-ips.json +5 -0
  248. data/test/mock-api/list-users.json +31 -0
  249. data/test/mock-api/load-dvd.json +63 -0
  250. data/test/mock-api/modify-fp.json +26 -0
  251. data/test/mock-api/modify-lb.json +33 -0
  252. data/test/mock-api/modify-mp.json +81 -0
  253. data/test/mock-api/modify-pn.json +20 -0
  254. data/test/mock-api/modify-port-mp.json +81 -0
  255. data/test/mock-api/modify-process-mp.json +73 -0
  256. data/test/mock-api/modify-public-ip.json +10 -0
  257. data/test/mock-api/modify-server-hardware.json +44 -0
  258. data/test/mock-api/modify-server-hdd.json +54 -0
  259. data/test/mock-api/modify-server.json +44 -0
  260. data/test/mock-api/modify-storage.json +19 -0
  261. data/test/mock-api/modify-user-api.json +15 -0
  262. data/test/mock-api/modify-user.json +15 -0
  263. data/test/mock-api/reinstall-image.json +52 -0
  264. data/test/mock-api/remove-firewall-policy.json +26 -0
  265. data/test/mock-api/remove-hdd.json +54 -0
  266. data/test/mock-api/remove-ip-fp.json +26 -0
  267. data/test/mock-api/remove-lb.json +66 -0
  268. data/test/mock-api/remove-pn.json +71 -0
  269. data/test/mock-api/remove-port-mp.json +73 -0
  270. data/test/mock-api/remove-process-mp.json +66 -0
  271. data/test/mock-api/remove-rule-lb.json +33 -0
  272. data/test/mock-api/remove-server-ip.json +58 -0
  273. data/test/mock-api/remove-server-pn.json +16 -0
  274. data/test/mock-api/restore-snapshot.json +55 -0
  275. data/test/mock-api/storage-servers.json +12 -0
  276. data/test/test_mock_dvd.rb +55 -0
  277. data/test/test_mock_firewall.rb +309 -0
  278. data/test/test_mock_image.rb +123 -0
  279. data/test/test_mock_load_balancer.rb +312 -0
  280. data/test/test_mock_log.rb +55 -0
  281. data/test/test_mock_monitoring_center.rb +55 -0
  282. data/test/test_mock_monitoring_policy.rb +587 -0
  283. data/test/test_mock_private_network.rb +206 -0
  284. data/test/test_mock_public_ip.rb +118 -0
  285. data/test/test_mock_server.rb +929 -0
  286. data/test/test_mock_server_appliance.rb +55 -0
  287. data/test/test_mock_shared_storage.rb +256 -0
  288. data/test/test_mock_usage.rb +34 -0
  289. data/test/test_mock_user.rb +270 -0
  290. metadata +360 -0
@@ -0,0 +1,123 @@
1
+ require_relative '../lib/oneandone'
2
+ require 'minitest/autorun'
3
+
4
+ class TestImage < Minitest::Test
5
+ def setup
6
+
7
+ OneAndOne.start('TEST-API-KEY')
8
+ @image = OneAndOne::Image.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-images.json')
17
+ data = JSON.parse(file)
18
+
19
+ # Create stub and perform call
20
+ Excon.stub({:method => :get, :path => '/v1/images'},
21
+ {:body => JSON.generate(data), :status => 200})
22
+
23
+ response = @image.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-image.json')
38
+ data = JSON.parse(file)
39
+
40
+ # Create stub and perform call
41
+ Excon.stub({:method => :post, :path => '/v1/images'},
42
+ {:body => JSON.generate(data), :status => 202})
43
+
44
+ response = @image.create(server_id: data['server_id'], name: data['name'],
45
+ frequency: data['frequency'], num_images: data['num_images'])
46
+
47
+ # Assertions
48
+ assert_equal response['name'], data['name']
49
+ assert_equal response['frequency'], data['frequency']
50
+ assert_equal response['num_images'], data['num_images']
51
+
52
+ # Clear out stubs
53
+ Excon.stubs.clear
54
+
55
+ end
56
+
57
+
58
+ def test_modify
59
+
60
+ # Read in mock JSON
61
+ file = File.read('mock-api/edit-image.json')
62
+ data = JSON.parse(file)
63
+
64
+ # Create stub and perform call
65
+ Excon.stub({:method => :put, :path => "/v1/images/#{data['id']}"},
66
+ {:body => JSON.generate(data), :status => 200})
67
+
68
+ response = @image.modify(image_id: data['id'], name: data['name'])
69
+
70
+ # Assertions
71
+ assert_equal response['name'], data['name']
72
+
73
+ # Clear out stubs
74
+ Excon.stubs.clear
75
+
76
+ end
77
+
78
+
79
+ def test_get
80
+
81
+ # Read in mock JSON
82
+ file = File.read('mock-api/get-image.json')
83
+ data = JSON.parse(file)
84
+
85
+ # Create stub and perform call
86
+ Excon.stub({:method => :get, :path => "/v1/images/#{data['id']}"},
87
+ {:body => JSON.generate(data), :status => 200})
88
+
89
+ response = @image.get(image_id: data['id'])
90
+
91
+ # Assertions
92
+ assert_equal response['name'], data['name']
93
+
94
+ # Clear out stubs
95
+ Excon.stubs.clear
96
+
97
+ end
98
+
99
+
100
+ def test_delete
101
+
102
+ # Read in mock JSON
103
+ file = File.read('mock-api/delete-image.json')
104
+ data = JSON.parse(file)
105
+
106
+ # Create stub and perform call
107
+ Excon.stub({:method => :delete, :path => "/v1/images/#{data['id']}"},
108
+ {:body => JSON.generate(data), :status => 202})
109
+
110
+ response = @image.delete(image_id: data['id'])
111
+
112
+ # Assertions
113
+ assert_equal response['name'], data['name']
114
+ assert_equal response['state'], 'REMOVING'
115
+
116
+ # Clear out stubs
117
+ Excon.stubs.clear
118
+
119
+ end
120
+
121
+ end
122
+
123
+
@@ -0,0 +1,312 @@
1
+ require_relative '../lib/oneandone'
2
+ require 'minitest/autorun'
3
+
4
+ class TestLoadBalancer < Minitest::Test
5
+ def setup
6
+
7
+ OneAndOne.start('TEST-API-KEY')
8
+ @load_balancer = OneAndOne::LoadBalancer.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-load-balancers.json')
17
+ data = JSON.parse(file)
18
+
19
+ # Create stub and perform call
20
+ Excon.stub({:method => :get, :path => '/v1/load_balancers'},
21
+ {:body => JSON.generate(data), :status => 200})
22
+
23
+ response = @load_balancer.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-lb.json')
38
+ data = JSON.parse(file)
39
+
40
+ # Create stub and perform call
41
+ Excon.stub({:method => :post, :path => '/v1/load_balancers'},
42
+ {:body => JSON.generate(data), :status => 202})
43
+
44
+ rule1 = {
45
+ 'protocol' => 'TCP',
46
+ 'port_balancer' => 80,
47
+ 'port_server' => 80,
48
+ 'source' => '0.0.0.0'
49
+ }
50
+
51
+ rules = [rule1]
52
+
53
+ response = @load_balancer.create(name: 'Test LB', description: 'Example Desc',
54
+ health_check_test: 'TCP', health_check_interval: 40, persistence: true,
55
+ persistence_time: 1200, method: 'ROUND_ROBIN', rules: rules)
56
+
57
+ # Assertions
58
+ assert_equal response['id'], data['id']
59
+
60
+ # Clear out stubs
61
+ Excon.stubs.clear
62
+
63
+ end
64
+
65
+
66
+ def test_get
67
+
68
+ # Read in mock JSON
69
+ file = File.read('mock-api/get-load-balancer.json')
70
+ data = JSON.parse(file)
71
+
72
+ # Create stub and perform call
73
+ Excon.stub({:method => :get, :path => "/v1/load_balancers/#{data['id']}"},
74
+ {:body => JSON.generate(data), :status => 200})
75
+
76
+ response = @load_balancer.get(load_balancer_id: data['id'])
77
+
78
+ # Assertions
79
+ assert_equal response['id'], data['id']
80
+
81
+ # Clear out stubs
82
+ Excon.stubs.clear
83
+
84
+ end
85
+
86
+
87
+ def test_modify
88
+
89
+ # Read in mock JSON
90
+ file = File.read('mock-api/modify-lb.json')
91
+ data = JSON.parse(file)
92
+
93
+ # Create stub and perform call
94
+ Excon.stub({:method => :put, :path => "/v1/load_balancers/#{data['id']}"},
95
+ {:body => JSON.generate(data), :status => 202})
96
+
97
+ response = @load_balancer.modify(load_balancer_id: data['id'],
98
+ name: 'New Name')
99
+
100
+ # Assertions
101
+ assert_equal response['id'], data['id']
102
+
103
+ # Clear out stubs
104
+ Excon.stubs.clear
105
+
106
+ end
107
+
108
+
109
+ def test_delete
110
+
111
+ # Read in mock JSON
112
+ file = File.read('mock-api/delete-lb.json')
113
+ data = JSON.parse(file)
114
+
115
+ # Create stub and perform call
116
+ Excon.stub({:method => :delete, :path => "/v1/load_balancers/#{data['id']}"},
117
+ {:body => JSON.generate(data), :status => 202})
118
+
119
+ response = @load_balancer.delete(load_balancer_id: data['id'])
120
+
121
+ # Assertions
122
+ assert_equal response['state'], 'REMOVING'
123
+
124
+ # Clear out stubs
125
+ Excon.stubs.clear
126
+
127
+ end
128
+
129
+
130
+ def test_ips
131
+
132
+ # Read in mock JSON
133
+ file = File.read('mock-api/list-lb-servers.json')
134
+ data = JSON.parse(file)
135
+
136
+ # Create stub and perform call
137
+ Excon.stub({:method => :get, :path => "/v1/load_balancers/LOAD-BALANCER-ID/server_ips"},
138
+ {:body => JSON.generate(data), :status => 200})
139
+
140
+ response = @load_balancer.ips(load_balancer_id: 'LOAD-BALANCER-ID')
141
+
142
+ # Assertions
143
+ assert_equal response.length, 2
144
+
145
+ # Clear out stubs
146
+ Excon.stubs.clear
147
+
148
+ end
149
+
150
+
151
+ def test_ip
152
+
153
+ # Read in mock JSON
154
+ file = File.read('mock-api/get-lb-server.json')
155
+ data = JSON.parse(file)
156
+
157
+ # Create stub and perform call
158
+ Excon.stub({:method => :get, :path => "/v1/load_balancers/LOAD-BALANCER-ID/server_ips/#{data['id']}"},
159
+ {:body => JSON.generate(data), :status => 200})
160
+
161
+ response = @load_balancer.ip(load_balancer_id: 'LOAD-BALANCER-ID', ip_id: data['id'])
162
+
163
+ # Assertions
164
+ assert_equal response['id'], data['id']
165
+
166
+ # Clear out stubs
167
+ Excon.stubs.clear
168
+
169
+ end
170
+
171
+
172
+ def test_remove_ip
173
+
174
+ # Read in mock JSON
175
+ file = File.read('mock-api/detach-server-lb.json')
176
+ data = JSON.parse(file)
177
+
178
+ # Create stub and perform call
179
+ Excon.stub({:method => :delete, :path => "/v1/load_balancers/#{data['id']}/server_ips/IP-ID"},
180
+ {:body => JSON.generate(data), :status => 202})
181
+
182
+ response = @load_balancer.remove_ip(load_balancer_id: data['id'], ip_id: 'IP-ID')
183
+
184
+ # Assertions
185
+ assert_equal response['state'], 'CONFIGURING'
186
+
187
+ # Clear out stubs
188
+ Excon.stubs.clear
189
+
190
+ end
191
+
192
+
193
+ def test_add_ips
194
+
195
+ # Read in mock JSON
196
+ file = File.read('mock-api/assign-server-lb.json')
197
+ data = JSON.parse(file)
198
+
199
+ # Create stub and perform call
200
+ Excon.stub({:method => :post, :path => "/v1/load_balancers/#{data['id']}/server_ips"},
201
+ {:body => JSON.generate(data), :status => 202})
202
+
203
+ ip1 = '<IP-ID>'
204
+
205
+ ips = [ip1]
206
+
207
+ response = @load_balancer.add_ips(load_balancer_id: data['id'], ips: ips)
208
+
209
+ # Assertions
210
+ assert_equal response['server_ips'].length, 1
211
+
212
+ # Clear out stubs
213
+ Excon.stubs.clear
214
+
215
+ end
216
+
217
+
218
+ def test_rules
219
+
220
+ # Read in mock JSON
221
+ file = File.read('mock-api/list-lb-rules.json')
222
+ data = JSON.parse(file)
223
+
224
+ # Create stub and perform call
225
+ Excon.stub({:method => :get, :path => "/v1/load_balancers/LOAD-BALANCER-ID/rules"},
226
+ {:body => JSON.generate(data), :status => 200})
227
+
228
+ response = @load_balancer.rules(load_balancer_id: 'LOAD-BALANCER-ID')
229
+
230
+ # Assertions
231
+ assert_equal response.length, 2
232
+
233
+ # Clear out stubs
234
+ Excon.stubs.clear
235
+
236
+ end
237
+
238
+
239
+ def test_rule
240
+
241
+ # Read in mock JSON
242
+ file = File.read('mock-api/get-lb-rule.json')
243
+ data = JSON.parse(file)
244
+
245
+ # Create stub and perform call
246
+ Excon.stub({:method => :get, :path => "/v1/load_balancers/LOAD-BALANCER-ID/rules/#{data['id']}"},
247
+ {:body => JSON.generate(data), :status => 200})
248
+
249
+ response = @load_balancer.rule(load_balancer_id: 'LOAD-BALANCER-ID', rule_id: data['id'])
250
+
251
+ # Assertions
252
+ assert_equal response['id'], data['id']
253
+
254
+ # Clear out stubs
255
+ Excon.stubs.clear
256
+
257
+ end
258
+
259
+
260
+ def test_add_rules
261
+
262
+ # Read in mock JSON
263
+ file = File.read('mock-api/add-rule-lb.json')
264
+ data = JSON.parse(file)
265
+
266
+ # Create stub and perform call
267
+ Excon.stub({:method => :post, :path => "/v1/load_balancers/#{data['id']}/rules"},
268
+ {:body => JSON.generate(data), :status => 202})
269
+
270
+ rule2 = {
271
+ 'protocol' => 'TCP',
272
+ 'port_balancer' => 90,
273
+ 'port_server' => 90,
274
+ 'source' => '0.0.0.0'
275
+ }
276
+
277
+ rules = [rule2]
278
+
279
+ response = @load_balancer.add_rules(load_balancer_id: data['id'],
280
+ rules: rules)
281
+
282
+ # Assertions
283
+ assert_equal response['rules'].length, 3
284
+
285
+ # Clear out stubs
286
+ Excon.stubs.clear
287
+
288
+ end
289
+
290
+
291
+ def test_remove_rule
292
+
293
+ # Read in mock JSON
294
+ file = File.read('mock-api/remove-rule-lb.json')
295
+ data = JSON.parse(file)
296
+
297
+ # Create stub and perform call
298
+ Excon.stub({:method => :delete, :path => "/v1/load_balancers/#{data['id']}/rules/RULE-ID"},
299
+ {:body => JSON.generate(data), :status => 202})
300
+
301
+ response = @load_balancer.remove_rule(load_balancer_id: data['id'], rule_id: 'RULE-ID')
302
+
303
+ # Assertions
304
+ assert_equal response['state'], 'CONFIGURING'
305
+
306
+ # Clear out stubs
307
+ Excon.stubs.clear
308
+
309
+ end
310
+
311
+
312
+ end
@@ -0,0 +1,55 @@
1
+ require_relative '../lib/oneandone'
2
+ require 'minitest/autorun'
3
+
4
+ class TestLog < Minitest::Test
5
+ def setup
6
+
7
+ OneAndOne.start('TEST-API-KEY')
8
+ @log = OneAndOne::Log.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-logs.json')
17
+ data = JSON.parse(file)
18
+
19
+ # Create stub and perform call
20
+ Excon.stub({:method => :get, :path => '/v1/logs'},
21
+ {:body => JSON.generate(data), :status => 200})
22
+
23
+ response = @log.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_get
35
+
36
+ # Read in mock JSON
37
+ file = File.read('mock-api/get-log.json')
38
+ data = JSON.parse(file)
39
+
40
+ # Create stub and perform call
41
+ Excon.stub({:method => :get, :path => "/v1/logs/#{data['id']}"},
42
+ {:body => JSON.generate(data), :status => 200})
43
+
44
+ response = @log.get(log_id: data['id'])
45
+
46
+ # Assertions
47
+ assert_equal response['id'], data['id']
48
+
49
+ # Clear out stubs
50
+ Excon.stubs.clear
51
+
52
+ end
53
+
54
+
55
+ end