vultr 0.4.3 → 2.0.0

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 (241) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +38 -0
  3. data/.standard.yml +1 -0
  4. data/Appraisals +8 -0
  5. data/CHANGELOG.md +9 -0
  6. data/Gemfile +6 -10
  7. data/README.md +307 -137
  8. data/Rakefile +10 -6
  9. data/bin/console +21 -0
  10. data/bin/setup +8 -0
  11. data/bin/test +6 -0
  12. data/gemfiles/faraday_1.gemfile +12 -0
  13. data/gemfiles/faraday_1.gemfile.lock +102 -0
  14. data/gemfiles/faraday_2.gemfile +11 -0
  15. data/gemfiles/faraday_2.gemfile.lock +82 -0
  16. data/lib/vultr/client.rb +111 -0
  17. data/lib/vultr/collection.rb +22 -0
  18. data/lib/vultr/error.rb +4 -0
  19. data/lib/vultr/middleware.rb +32 -0
  20. data/lib/vultr/object.rb +19 -0
  21. data/lib/vultr/objects/account.rb +4 -0
  22. data/lib/vultr/objects/application.rb +4 -0
  23. data/lib/vultr/objects/backup.rb +4 -0
  24. data/lib/vultr/objects/bare_metal.rb +4 -0
  25. data/lib/vultr/objects/block_storage.rb +4 -0
  26. data/lib/vultr/objects/domain.rb +4 -0
  27. data/lib/vultr/objects/firewall_group.rb +4 -0
  28. data/lib/vultr/objects/instance.rb +4 -0
  29. data/lib/vultr/objects/iso.rb +4 -0
  30. data/lib/vultr/objects/kubernetes_cluster.rb +4 -0
  31. data/lib/vultr/objects/load_balancer.rb +4 -0
  32. data/lib/vultr/objects/object_storage.rb +4 -0
  33. data/lib/vultr/objects/operating_system.rb +4 -0
  34. data/lib/vultr/objects/plan.rb +4 -0
  35. data/lib/vultr/objects/private_network.rb +4 -0
  36. data/lib/vultr/objects/region.rb +4 -0
  37. data/lib/vultr/objects/reserved_ip.rb +4 -0
  38. data/lib/vultr/objects/snapshot.rb +4 -0
  39. data/lib/vultr/objects/ssh_key.rb +4 -0
  40. data/lib/vultr/objects/startup_script.rb +4 -0
  41. data/lib/vultr/objects/user.rb +4 -0
  42. data/lib/vultr/resource.rb +52 -0
  43. data/lib/vultr/resources/account.rb +7 -0
  44. data/lib/vultr/resources/applications.rb +8 -0
  45. data/lib/vultr/resources/backups.rb +12 -0
  46. data/lib/vultr/resources/bare_metal.rb +79 -0
  47. data/lib/vultr/resources/block_storage.rb +32 -0
  48. data/lib/vultr/resources/dns.rb +58 -0
  49. data/lib/vultr/resources/firewall.rb +42 -0
  50. data/lib/vultr/resources/instances.rb +145 -0
  51. data/lib/vultr/resources/iso.rb +25 -0
  52. data/lib/vultr/resources/kubernetes.rb +61 -0
  53. data/lib/vultr/resources/load_balancers.rb +50 -0
  54. data/lib/vultr/resources/object_storage.rb +33 -0
  55. data/lib/vultr/resources/operating_systems.rb +8 -0
  56. data/lib/vultr/resources/plans.rb +13 -0
  57. data/lib/vultr/resources/private_networks.rb +24 -0
  58. data/lib/vultr/resources/regions.rb +12 -0
  59. data/lib/vultr/resources/reserved_ips.rb +32 -0
  60. data/lib/vultr/resources/snapshots.rb +28 -0
  61. data/lib/vultr/resources/ssh_keys.rb +24 -0
  62. data/lib/vultr/resources/startup_scripts.rb +24 -0
  63. data/lib/vultr/resources/users.rb +24 -0
  64. data/lib/vultr/version.rb +1 -8
  65. data/lib/vultr.rb +58 -887
  66. data/test/fixtures/account/info.json +11 -0
  67. data/test/fixtures/applications/list.json +29 -0
  68. data/test/fixtures/backups/list.json +18 -0
  69. data/test/fixtures/backups/retrieve.json +9 -0
  70. data/test/fixtures/bare_metals/bandwidth.json +12 -0
  71. data/test/fixtures/bare_metals/create.json +26 -0
  72. data/test/fixtures/bare_metals/list.json +36 -0
  73. data/test/fixtures/bare_metals/list_ipv4.json +18 -0
  74. data/test/fixtures/bare_metals/list_ipv6.json +17 -0
  75. data/test/fixtures/bare_metals/reinstall.json +25 -0
  76. data/test/fixtures/bare_metals/retrieve.json +26 -0
  77. data/test/fixtures/bare_metals/update.json +26 -0
  78. data/test/fixtures/bare_metals/upgrades.json +47 -0
  79. data/test/fixtures/bare_metals/user_data.json +5 -0
  80. data/test/fixtures/bare_metals/vnc.json +5 -0
  81. data/test/fixtures/block_storage/attach.json +4 -0
  82. data/test/fixtures/block_storage/create.json +13 -0
  83. data/test/fixtures/block_storage/detach.json +4 -0
  84. data/test/fixtures/block_storage/list.json +22 -0
  85. data/test/fixtures/block_storage/retrieve.json +13 -0
  86. data/test/fixtures/domains/create.json +6 -0
  87. data/test/fixtures/domains/dnssec.json +7 -0
  88. data/test/fixtures/domains/list.json +15 -0
  89. data/test/fixtures/domains/record.json +10 -0
  90. data/test/fixtures/domains/records.json +19 -0
  91. data/test/fixtures/domains/retrieve.json +6 -0
  92. data/test/fixtures/domains/soa.json +6 -0
  93. data/test/fixtures/firewall/create.json +11 -0
  94. data/test/fixtures/firewall/create_rule.json +9 -0
  95. data/test/fixtures/firewall/delete.json +1 -0
  96. data/test/fixtures/firewall/delete_rule.json +1 -0
  97. data/test/fixtures/firewall/list.json +20 -0
  98. data/test/fixtures/firewall/list_rules.json +22 -0
  99. data/test/fixtures/firewall/retrieve.json +11 -0
  100. data/test/fixtures/firewall/retrieve_rule.json +13 -0
  101. data/test/fixtures/firewall/update.json +1 -0
  102. data/test/fixtures/instances/attach_iso.json +6 -0
  103. data/test/fixtures/instances/attach_private_network.json +1 -0
  104. data/test/fixtures/instances/backup_schedule.json +10 -0
  105. data/test/fixtures/instances/bandwidth.json +12 -0
  106. data/test/fixtures/instances/create.json +36 -0
  107. data/test/fixtures/instances/create_ipv4_reverse.json +1 -0
  108. data/test/fixtures/instances/create_ipv6_reverse.json +1 -0
  109. data/test/fixtures/instances/delete.json +1 -0
  110. data/test/fixtures/instances/delete_ipv4.json +1 -0
  111. data/test/fixtures/instances/delete_ipv6.json +1 -0
  112. data/test/fixtures/instances/detach_iso.json +5 -0
  113. data/test/fixtures/instances/detach_private_network.json +1 -0
  114. data/test/fixtures/instances/halt.json +1 -0
  115. data/test/fixtures/instances/halt_instances.json +1 -0
  116. data/test/fixtures/instances/ipv4.json +9 -0
  117. data/test/fixtures/instances/ipv6_reverse.json +15 -0
  118. data/test/fixtures/instances/iso.json +6 -0
  119. data/test/fixtures/instances/list.json +44 -0
  120. data/test/fixtures/instances/list_ipv4.json +32 -0
  121. data/test/fixtures/instances/list_ipv6.json +17 -0
  122. data/test/fixtures/instances/list_private_networks.json +16 -0
  123. data/test/fixtures/instances/neighbors.json +6 -0
  124. data/test/fixtures/instances/reboot.json +1 -0
  125. data/test/fixtures/instances/reboot_instances.json +1 -0
  126. data/test/fixtures/instances/reinstall.json +35 -0
  127. data/test/fixtures/instances/restore.json +7 -0
  128. data/test/fixtures/instances/retrieve.json +35 -0
  129. data/test/fixtures/instances/set_backup_schedule.json +1 -0
  130. data/test/fixtures/instances/set_default_reverse_dns_entry.json +1 -0
  131. data/test/fixtures/instances/start.json +1 -0
  132. data/test/fixtures/instances/start_instances.json +1 -0
  133. data/test/fixtures/instances/update.json +1 -0
  134. data/test/fixtures/instances/upgrades.json +55 -0
  135. data/test/fixtures/instances/user_data.json +5 -0
  136. data/test/fixtures/isos/create.json +8 -0
  137. data/test/fixtures/isos/list.json +20 -0
  138. data/test/fixtures/isos/list_public.json +17 -0
  139. data/test/fixtures/isos/retrieve.json +11 -0
  140. data/test/fixtures/kubernetes/config.json +3 -0
  141. data/test/fixtures/kubernetes/create.json +39 -0
  142. data/test/fixtures/kubernetes/create_node_pool.json +25 -0
  143. data/test/fixtures/kubernetes/list.json +85 -0
  144. data/test/fixtures/kubernetes/list_node_pools.json +56 -0
  145. data/test/fixtures/kubernetes/list_resources.json +26 -0
  146. data/test/fixtures/kubernetes/retrieve.json +39 -0
  147. data/test/fixtures/kubernetes/retrieve_node_pool.json +25 -0
  148. data/test/fixtures/kubernetes/update_node_pool.json +19 -0
  149. data/test/fixtures/load_balancers/create.json +48 -0
  150. data/test/fixtures/load_balancers/create_forwarding_rule.json +1 -0
  151. data/test/fixtures/load_balancers/delete.json +1 -0
  152. data/test/fixtures/load_balancers/delete_forwarding_rule.json +1 -0
  153. data/test/fixtures/load_balancers/list.json +57 -0
  154. data/test/fixtures/load_balancers/list_firewall_rules.json +17 -0
  155. data/test/fixtures/load_balancers/list_forwarding_rules.json +18 -0
  156. data/test/fixtures/load_balancers/retrieve.json +48 -0
  157. data/test/fixtures/load_balancers/retrieve_firewall_rule.json +8 -0
  158. data/test/fixtures/load_balancers/retrieve_forwarding_rule.json +9 -0
  159. data/test/fixtures/load_balancers/update.json +1 -0
  160. data/test/fixtures/object_storage/create.json +14 -0
  161. data/test/fixtures/object_storage/delete.json +1 -0
  162. data/test/fixtures/object_storage/list.json +22 -0
  163. data/test/fixtures/object_storage/list_clusters.json +17 -0
  164. data/test/fixtures/object_storage/regenerate_keys.json +7 -0
  165. data/test/fixtures/object_storage/retrieve.json +13 -0
  166. data/test/fixtures/object_storage/update.json +1 -0
  167. data/test/fixtures/operating_systems/list.json +17 -0
  168. data/test/fixtures/plans/list.json +22 -0
  169. data/test/fixtures/plans/list_metal.json +24 -0
  170. data/test/fixtures/private_networks/create.json +10 -0
  171. data/test/fixtures/private_networks/delete.json +1 -0
  172. data/test/fixtures/private_networks/list.json +19 -0
  173. data/test/fixtures/private_networks/retrieve.json +10 -0
  174. data/test/fixtures/private_networks/update.json +1 -0
  175. data/test/fixtures/regions/list.json +20 -0
  176. data/test/fixtures/regions/list_availability.json +24 -0
  177. data/test/fixtures/reserved_ips/attach.json +1 -0
  178. data/test/fixtures/reserved_ips/convert.json +11 -0
  179. data/test/fixtures/reserved_ips/create.json +11 -0
  180. data/test/fixtures/reserved_ips/delete.json +1 -0
  181. data/test/fixtures/reserved_ips/detach.json +1 -0
  182. data/test/fixtures/reserved_ips/list.json +29 -0
  183. data/test/fixtures/reserved_ips/retrieve.json +11 -0
  184. data/test/fixtures/snapshots/create.json +11 -0
  185. data/test/fixtures/snapshots/create_from_url.json +11 -0
  186. data/test/fixtures/snapshots/delete.json +1 -0
  187. data/test/fixtures/snapshots/list.json +20 -0
  188. data/test/fixtures/snapshots/retrieve.json +11 -0
  189. data/test/fixtures/snapshots/update.json +1 -0
  190. data/test/fixtures/ssh_keys/create.json +8 -0
  191. data/test/fixtures/ssh_keys/delete.json +1 -0
  192. data/test/fixtures/ssh_keys/list.json +17 -0
  193. data/test/fixtures/ssh_keys/retrieve.json +8 -0
  194. data/test/fixtures/ssh_keys/update.json +1 -0
  195. data/test/fixtures/startup_scripts/create.json +10 -0
  196. data/test/fixtures/startup_scripts/delete.json +1 -0
  197. data/test/fixtures/startup_scripts/list.json +18 -0
  198. data/test/fixtures/startup_scripts/retrieve.json +10 -0
  199. data/test/fixtures/startup_scripts/update.json +1 -0
  200. data/test/fixtures/users/create.json +9 -0
  201. data/test/fixtures/users/delete.json +1 -0
  202. data/test/fixtures/users/list.json +29 -0
  203. data/test/fixtures/users/retrieve.json +20 -0
  204. data/test/fixtures/users/update.json +1 -0
  205. data/test/test_helper.rb +18 -5
  206. data/test/vultr/client_test.rb +8 -0
  207. data/test/vultr/object_test.rb +21 -0
  208. data/test/vultr/resources/account_test.rb +12 -0
  209. data/test/vultr/resources/applications_test.rb +15 -0
  210. data/test/vultr/resources/backups_test.rb +24 -0
  211. data/test/vultr/resources/bare_metal_test.rb +267 -0
  212. data/test/vultr/resources/block_storage_test.rb +85 -0
  213. data/test/vultr/resources/dns_test.rb +134 -0
  214. data/test/vultr/resources/firewall_test.rb +88 -0
  215. data/test/vultr/resources/instances_test.rb +325 -0
  216. data/test/vultr/resources/iso_test.rb +58 -0
  217. data/test/vultr/resources/kubernetes_test.rb +185 -0
  218. data/test/vultr/resources/load_balancers_test.rb +110 -0
  219. data/test/vultr/resources/object_storage_test.rb +71 -0
  220. data/test/vultr/resources/operating_systems_test.rb +15 -0
  221. data/test/vultr/resources/plans_test.rb +25 -0
  222. data/test/vultr/resources/private_networks_test.rb +50 -0
  223. data/test/vultr/resources/regions_test.rb +26 -0
  224. data/test/vultr/resources/reserved_ips_test.rb +67 -0
  225. data/test/vultr/resources/snapshots_test.rb +60 -0
  226. data/test/vultr/resources/ssh_keys_test.rb +50 -0
  227. data/test/vultr/resources/startup_scripts_test.rb +50 -0
  228. data/test/vultr/resources/users_test.rb +50 -0
  229. data/vultr.gemspec +15 -17
  230. metadata +237 -54
  231. data/.travis.yml +0 -26
  232. data/test/vultr/vultr_account_test.rb +0 -29
  233. data/test/vultr/vultr_app_test.rb +0 -26
  234. data/test/vultr/vultr_backup_test.rb +0 -22
  235. data/test/vultr/vultr_iso_test.rb +0 -27
  236. data/test/vultr/vultr_os_test.rb +0 -21
  237. data/test/vultr/vultr_plan_test.rb +0 -22
  238. data/test/vultr/vultr_region_test.rb +0 -33
  239. data/test/vultr/vultr_snapshot_test.rb +0 -30
  240. data/test/vultr/vultr_sshkey_test.rb +0 -50
  241. data/test/vultr/vultr_startupscript_test.rb +0 -53
@@ -0,0 +1,11 @@
1
+ {
2
+ "snapshot": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "description": "Example Snapshot",
6
+ "size": 0,
7
+ "status": "pending",
8
+ "os_id": 215,
9
+ "app_id": 0
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,20 @@
1
+ {
2
+ "snapshots": [
3
+ {
4
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
5
+ "date_created": "2020-10-10T01:56:20+00:00",
6
+ "description": "Example Snapshot",
7
+ "size": 42949672960,
8
+ "status": "complete",
9
+ "os_id": 215,
10
+ "app_id": 0
11
+ }
12
+ ],
13
+ "meta": {
14
+ "total": 1,
15
+ "links": {
16
+ "next": "",
17
+ "prev": ""
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "snapshot": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "description": "Example Snapshot",
6
+ "size": 42949672960,
7
+ "status": "complete",
8
+ "os_id": 215,
9
+ "app_id": 0
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,8 @@
1
+ {
2
+ "ssh_key": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "name": "Example SSH Key",
6
+ "ssh_key": "ssh-rsa AA... user@example.com"
7
+ }
8
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,17 @@
1
+ {
2
+ "ssh_keys": [
3
+ {
4
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
5
+ "date_created": "2020-10-10T01:56:20+00:00",
6
+ "name": "Example SSH Key",
7
+ "ssh_key": "ssh-rsa AA... user@example.com"
8
+ }
9
+ ],
10
+ "meta": {
11
+ "total": 1,
12
+ "links": {
13
+ "next": "",
14
+ "prev": ""
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "ssh_key": {
3
+ "id": "3b8066a7-b438-455a-9688-44afc9a3597f",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "name": "Example SSH Key",
6
+ "ssh_key": "ssh-rsa AA... user@example.com"
7
+ }
8
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,10 @@
1
+ {
2
+ "startup_script": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "date_modified": "2020-10-10T01:56:20+00:00",
6
+ "name": "Example Startup Script",
7
+ "type": "pxe",
8
+ "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
9
+ }
10
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,18 @@
1
+ {
2
+ "startup_scripts": [
3
+ {
4
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
5
+ "date_created": "2020-10-10T01:56:20+00:00",
6
+ "date_modified": "2020-10-10T01:59:20+00:00",
7
+ "name": "Example Startup Script",
8
+ "type": "pxe"
9
+ }
10
+ ],
11
+ "meta": {
12
+ "total": 1,
13
+ "links": {
14
+ "next": "",
15
+ "prev": ""
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "startup_script": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "date_modified": "2020-10-10T01:59:20+00:00",
6
+ "name": "Example Startup Script",
7
+ "type": "pxe",
8
+ "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
9
+ }
10
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,9 @@
1
+ {
2
+ "user": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "name": "Example User",
5
+ "email": "user@example.com",
6
+ "api_enabled": true,
7
+ "acls": []
8
+ }
9
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,29 @@
1
+ {
2
+ "users": [
3
+ {
4
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
5
+ "email": "user@example.com",
6
+ "api_enabled": true,
7
+ "acls": [
8
+ "manage_users",
9
+ "subscriptions_view",
10
+ "subscriptions",
11
+ "provisioning",
12
+ "billing",
13
+ "support",
14
+ "abuse",
15
+ "dns",
16
+ "upgrade",
17
+ "objstore",
18
+ "loadbalancer"
19
+ ]
20
+ }
21
+ ],
22
+ "meta": {
23
+ "total": 1,
24
+ "links": {
25
+ "next": "nextid",
26
+ "prev": "previd"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "user": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "email": "user@example.com",
5
+ "api_enabled": true,
6
+ "acls": [
7
+ "manage_users",
8
+ "subscriptions_view",
9
+ "subscriptions",
10
+ "provisioning",
11
+ "billing",
12
+ "support",
13
+ "abuse",
14
+ "dns",
15
+ "upgrade",
16
+ "objstore",
17
+ "loadbalancer"
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1 @@
1
+ {}
data/test/test_helper.rb CHANGED
@@ -1,6 +1,19 @@
1
- require 'coveralls'
2
- Coveralls.wear!
1
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
2
+ require "vultr"
3
+ require "minitest/autorun"
4
+ require "faraday"
5
+ require "json"
3
6
 
4
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
5
- require 'vultr'
6
- require 'minitest/autorun'
7
+ class Minitest::Test
8
+ def stub_response(fixture:, status: 200, headers: {"Content-Type" => "application/json"})
9
+ [status, headers, File.read("test/fixtures/#{fixture}.json")]
10
+ end
11
+
12
+ def stub_request(path, response:, method: :get, body: {})
13
+ Faraday::Adapter::Test::Stubs.new do |stub|
14
+ arguments = [method, "/v2/#{path}"]
15
+ arguments << body.to_json if [:post, :put, :patch].include?(method)
16
+ stub.send(*arguments) { |env| response }
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ require "test_helper"
2
+
3
+ class ClientTest < Minitest::Test
4
+ def test_api_key
5
+ client = Vultr::Client.new api_key: "test"
6
+ assert_equal "test", client.api_key
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ require "test_helper"
2
+
3
+ class ObjectTest < Minitest::Test
4
+ def test_creating_object_from_hash
5
+ assert_equal "bar", Vultr::Object.new(foo: "bar").foo
6
+ end
7
+
8
+ def test_nested_hash
9
+ assert_equal "foobar", Vultr::Object.new(foo: {bar: {baz: "foobar"}}).foo.bar.baz
10
+ end
11
+
12
+ def test_nested_number
13
+ assert_equal 1, Vultr::Object.new(foo: {bar: 1}).foo.bar
14
+ end
15
+
16
+ def test_array
17
+ object = Vultr::Object.new(foo: [{bar: :baz}])
18
+ assert_equal OpenStruct, object.foo.first.class
19
+ assert_equal :baz, object.foo.first.bar
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ require "test_helper"
2
+
3
+ class AccountResourceTest < Minitest::Test
4
+ def test_info
5
+ stub = stub_request("account", response: stub_response(fixture: "account/info"))
6
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
7
+ account = client.account.info
8
+
9
+ assert_equal Vultr::Account, account.class
10
+ assert_equal "admin@example.com", account.email
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class ApplicationsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("applications", response: stub_response(fixture: "applications/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ applications = client.applications.list
10
+
11
+ assert_equal Vultr::Collection, applications.class
12
+ assert_equal Vultr::Application, applications.data.first.class
13
+ assert_equal 2, applications.total
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class BackupsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("backups", response: stub_response(fixture: "backups/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ backups = client.backups.list
10
+ assert_equal Vultr::Collection, backups.class
11
+ assert_equal Vultr::Backup, backups.data.first.class
12
+ assert_equal 1, backups.total
13
+ end
14
+
15
+ def test_retrieve
16
+ backup_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
17
+ stub = stub_request("backups/#{backup_id}", response: stub_response(fixture: "backups/retrieve"))
18
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
19
+ backup = client.backups.retrieve(backup_id: backup_id)
20
+
21
+ assert_equal Vultr::Backup, backup.class
22
+ assert_equal "complete", backup.status
23
+ end
24
+ end
@@ -0,0 +1,267 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class BareMetalResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("bare-metals", response: stub_response(fixture: "bare_metals/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ bare_metal = client.bare_metal.list
10
+
11
+ assert_equal Vultr::Collection, bare_metal.class
12
+ assert_equal Vultr::BareMetal, bare_metal.data.first.class
13
+ assert_equal 1, bare_metal.total
14
+ assert_equal "next", bare_metal.next_cursor
15
+ assert_equal "prev", bare_metal.prev_cursor
16
+ end
17
+
18
+ def test_create
19
+ body = {region: "ams", plan: "vbm-4c-32gb", label: "Example Bare Metal", app_id: 3, enable_ipv6: true}
20
+ stub = stub_request("bare-metals", method: :post, body: body, response: stub_response(fixture: "bare_metals/create", status: 201))
21
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
22
+ bare_metal = client.bare_metal.create(**body)
23
+
24
+ assert_equal bare_metal.region, "ams"
25
+ assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
26
+ assert_equal bare_metal.plan, "vbm-4c-32gb"
27
+ assert_equal bare_metal.label, "Example Bare Metal"
28
+ assert_equal bare_metal.features, ["ipv6"]
29
+ end
30
+
31
+ def test_retrieve
32
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
33
+ stub = stub_request("bare-metals/#{baremetal_id}", response: stub_response(fixture: "bare_metals/retrieve"))
34
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
35
+ bare_metal = client.bare_metal.retrieve(baremetal_id: baremetal_id)
36
+
37
+ assert_equal bare_metal.id, baremetal_id
38
+ assert_equal bare_metal.os, "Application"
39
+ assert_equal bare_metal.ram, "32768 MB"
40
+ assert_equal bare_metal.disk, "2x 240GB SSD"
41
+ assert_equal bare_metal.main_ip, "192.0.2.123"
42
+ assert_equal bare_metal.cpu_count, 4
43
+ assert_equal bare_metal.region, "ams"
44
+ assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
45
+ assert_equal bare_metal.status, "pending"
46
+ assert_equal bare_metal.netmask_v4, "255.255.254.0"
47
+ assert_equal bare_metal.gateway_v4, "192.0.2.1"
48
+ assert_equal bare_metal.plan, "vbm-4c-32gb"
49
+ assert_equal bare_metal.v6_network, "2001:0db8:5001:3990::"
50
+ assert_equal bare_metal.v6_main_ip, "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a"
51
+ assert_equal bare_metal.v6_network_size, 64
52
+ assert_equal bare_metal.mac_address, 2199756823533
53
+ assert_equal bare_metal.label, "Example Bare Metal"
54
+ assert_equal bare_metal.tag, "Example Tag"
55
+ assert_equal bare_metal.os_id, 183
56
+ assert_equal bare_metal.app_id, 3
57
+ assert_equal bare_metal.image_id, ""
58
+ assert_equal bare_metal.features, ["ipv6"]
59
+ end
60
+
61
+ def test_update
62
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
63
+ body = {label: "Updated Bare Metal Label", tag: "Updated Tag", user_data: "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="}
64
+ stub = stub_request("bare-metals/#{baremetal_id}", method: :patch, body: body, response: stub_response(fixture: "bare_metals/update", status: 202))
65
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
66
+ bare_metal = client.bare_metal.update(baremetal_id: baremetal_id, **body)
67
+
68
+ assert_equal bare_metal.id, baremetal_id
69
+ assert_equal bare_metal.os, "Application"
70
+ assert_equal bare_metal.ram, "32768 MB"
71
+ assert_equal bare_metal.disk, "2x 240GB SSD"
72
+ assert_equal bare_metal.main_ip, "192.0.2.123"
73
+ assert_equal bare_metal.cpu_count, 4
74
+ assert_equal bare_metal.region, "ams"
75
+ assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
76
+ assert_equal bare_metal.status, "pending"
77
+ assert_equal bare_metal.netmask_v4, "255.255.254.0"
78
+ assert_equal bare_metal.gateway_v4, "192.0.2.1"
79
+ assert_equal bare_metal.plan, "vbm-4c-32gb"
80
+ assert_equal bare_metal.v6_network, "2001:0db8:5001:3990::"
81
+ assert_equal bare_metal.v6_main_ip, "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a"
82
+ assert_equal bare_metal.v6_network_size, 64
83
+ assert_equal bare_metal.mac_address, 2199756823533
84
+ assert_equal bare_metal.label, "Updated Bare Metal Label"
85
+ assert_equal bare_metal.tag, "Updated Tag"
86
+ assert_equal bare_metal.os_id, 183
87
+ assert_equal bare_metal.app_id, 3
88
+ assert_equal bare_metal.image_id, ""
89
+ assert_equal bare_metal.features, ["ipv6"]
90
+ end
91
+
92
+ def test_delete
93
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
94
+ stub = stub_request("bare-metals/#{baremetal_id}", method: :delete, response: {})
95
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
96
+
97
+ assert client.bare_metal.delete(baremetal_id: baremetal_id)
98
+ end
99
+
100
+ def test_start
101
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
102
+ stub = stub_request("bare-metals/#{baremetal_id}/start", method: :post, body: {}, response: {})
103
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
104
+
105
+ assert client.bare_metal.start(baremetal_id: baremetal_id)
106
+ end
107
+
108
+ def test_reboot
109
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
110
+ stub = stub_request("bare-metals/#{baremetal_id}/reboot", method: :post, body: {}, response: {})
111
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
112
+
113
+ assert client.bare_metal.reboot(baremetal_id: baremetal_id)
114
+ end
115
+
116
+ def test_reinstall
117
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
118
+ stub = stub_request("bare-metals/#{baremetal_id}/reinstall", method: :post, body: {}, response: stub_response(fixture: "bare_metals/reinstall", status: 202))
119
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
120
+
121
+ bare_metal = client.bare_metal.reinstall(baremetal_id: baremetal_id)
122
+
123
+ assert_equal bare_metal.id, baremetal_id
124
+ assert_equal bare_metal.os, "Application"
125
+ assert_equal bare_metal.ram, "32768 MB"
126
+ assert_equal bare_metal.disk, "2x 240GB SSD"
127
+ assert_equal bare_metal.main_ip, "192.0.2.123"
128
+ assert_equal bare_metal.cpu_count, 4
129
+ assert_equal bare_metal.region, "ams"
130
+ assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
131
+ assert_equal bare_metal.status, "pending"
132
+ assert_equal bare_metal.netmask_v4, "255.255.254.0"
133
+ assert_equal bare_metal.gateway_v4, "192.0.2.1"
134
+ assert_equal bare_metal.plan, "vbm-4c-32gb"
135
+ assert_equal bare_metal.v6_network, "2001:0db8:5001:3990::"
136
+ assert_equal bare_metal.v6_main_ip, "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a"
137
+ assert_equal bare_metal.v6_network_size, 64
138
+ assert_equal bare_metal.label, "Example Bare Metal"
139
+ assert_equal bare_metal.mac_address, 2199756823533
140
+ assert_equal bare_metal.tag, "Example Tag"
141
+ assert_equal bare_metal.os_id, 183
142
+ assert_equal bare_metal.app_id, 3
143
+ assert_equal bare_metal.image_id, ""
144
+ end
145
+
146
+ def test_halt
147
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
148
+ stub = stub_request("bare-metals/#{baremetal_id}/halt", method: :post, body: {}, response: {})
149
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
150
+
151
+ assert client.bare_metal.halt(baremetal_id: baremetal_id)
152
+ end
153
+
154
+ def test_bandwidth
155
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
156
+ stub = stub_request("bare-metals/#{baremetal_id}/bandwidth", method: :get, response: stub_response(fixture: "bare_metals/bandwidth"))
157
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
158
+
159
+ bandwidth = client.bare_metal.bandwidth(baremetal_id: baremetal_id)
160
+
161
+ assert_equal bandwidth["2020-07-25"].class, OpenStruct
162
+ assert_equal bandwidth["2020-07-25"].incoming_bytes, 15989787
163
+ assert_equal bandwidth["2020-07-25"].outgoing_bytes, 25327729
164
+
165
+ assert_equal bandwidth["2020-07-26"].class, OpenStruct
166
+ assert_equal bandwidth["2020-07-26"].incoming_bytes, 13964112
167
+ assert_equal bandwidth["2020-07-26"].outgoing_bytes, 22257069
168
+ end
169
+
170
+ def test_user_data
171
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
172
+ stub = stub_request("bare-metals/#{baremetal_id}/user-data", method: :get, response: stub_response(fixture: "bare_metals/user_data"))
173
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
174
+
175
+ user_data = client.bare_metal.user_data(baremetal_id: baremetal_id)
176
+
177
+ assert_equal user_data.data, "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
178
+ end
179
+
180
+ def test_upgrades
181
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
182
+ stub = stub_request("bare-metals/#{baremetal_id}/upgrades", method: :get, response: stub_response(fixture: "bare_metals/upgrades"))
183
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
184
+
185
+ upgrades = client.bare_metal.upgrades(baremetal_id: baremetal_id)
186
+
187
+ assert_equal upgrades.os.class, Array
188
+ assert_equal upgrades.applications.class, Array
189
+ end
190
+
191
+ def test_vnc
192
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
193
+ stub = stub_request("bare-metals/#{baremetal_id}/vnc", method: :get, response: stub_response(fixture: "bare_metals/vnc"))
194
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
195
+
196
+ vnc = client.bare_metal.vnc(baremetal_id: baremetal_id)
197
+
198
+ assert_equal vnc.url, "https://my.vultr.com/subs/baremetal/novnc/api.php?data=00example11223344"
199
+ end
200
+
201
+ def test_list_ipv4
202
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
203
+ stub = stub_request("bare-metals/#{baremetal_id}/ipv4", method: :get, response: stub_response(fixture: "bare_metals/list_ipv4"))
204
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
205
+
206
+ ipv4 = client.bare_metal.list_ipv4(baremetal_id: baremetal_id)
207
+
208
+ assert_equal Vultr::Collection, ipv4.class
209
+ assert_equal Vultr::Object, ipv4.data.first.class
210
+ assert_equal 1, ipv4.total
211
+ assert_equal "next", ipv4.next_cursor
212
+ assert_equal "prev", ipv4.prev_cursor
213
+ end
214
+
215
+ def test_list_ipv6
216
+ baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
217
+ stub = stub_request("bare-metals/#{baremetal_id}/ipv6", method: :get, response: stub_response(fixture: "bare_metals/list_ipv6"))
218
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
219
+
220
+ ipv6 = client.bare_metal.list_ipv6(baremetal_id: baremetal_id)
221
+
222
+ assert_equal Vultr::Collection, ipv6.class
223
+ assert_equal Vultr::Object, ipv6.data.first.class
224
+ assert_equal 1, ipv6.total
225
+ assert_equal "next", ipv6.next_cursor
226
+ assert_equal "prev", ipv6.prev_cursor
227
+ end
228
+
229
+ def test_halt_instances
230
+ baremetal_ids = [
231
+ "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
232
+ "7f6f84ea-8f87-4d9e-af01-ac44db05911c",
233
+ "54a83807-64ce-42e8-a0da-4d6c31c5b93b"
234
+ ]
235
+
236
+ stub = stub_request("bare-metals/halt", method: :post, body: {baremetal_ids: baremetal_ids}, response: {})
237
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
238
+
239
+ assert client.bare_metal.halt_instances(baremetal_ids: baremetal_ids)
240
+ end
241
+
242
+ def test_reboot_instances
243
+ baremetal_ids = [
244
+ "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
245
+ "7f6f84ea-8f87-4d9e-af01-ac44db05911c",
246
+ "54a83807-64ce-42e8-a0da-4d6c31c5b93b"
247
+ ]
248
+
249
+ stub = stub_request("bare-metals/reboot", method: :post, body: {baremetal_ids: baremetal_ids}, response: {})
250
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
251
+
252
+ assert client.bare_metal.reboot_instances(baremetal_ids: baremetal_ids)
253
+ end
254
+
255
+ def test_start_instances
256
+ baremetal_ids = [
257
+ "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
258
+ "7f6f84ea-8f87-4d9e-af01-ac44db05911c",
259
+ "54a83807-64ce-42e8-a0da-4d6c31c5b93b"
260
+ ]
261
+
262
+ stub = stub_request("bare-metals/start", method: :post, body: {baremetal_ids: baremetal_ids}, response: {})
263
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
264
+
265
+ assert client.bare_metal.start_instances(baremetal_ids: baremetal_ids)
266
+ end
267
+ end