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,58 @@
1
+ require "test_helper"
2
+
3
+ class IsoResourceTest < Minitest::Test
4
+ def test_list
5
+ stub = stub_request("iso", response: stub_response(fixture: "isos/list"))
6
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
7
+ iso = client.iso.list
8
+
9
+ keys = [:id, :date_created, :filename, :size, :md5sum, :sha512sum, :status]
10
+ assert_equal Vultr::Collection, iso.class
11
+ assert_equal Vultr::Iso, iso.data.first.class
12
+ assert_equal keys, iso.data.first.to_h.keys
13
+ assert_equal 1, iso.total
14
+ end
15
+
16
+ def test_create
17
+ body = {url: "http://example.com/my-iso.iso"}
18
+ stub = stub_request("iso", method: :post, body: body, response: stub_response(fixture: "isos/create", status: 201))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ iso = client.iso.create(**body)
21
+
22
+ assert_equal "cb676a46-66fd-4dfb-b839-443f2e6c0b60", iso.id
23
+ assert_equal Time.parse("2020-10-10T01:56:20+00:00"), iso.date_created
24
+ assert_equal "my-iso.iso", iso.filename
25
+ assert_equal "pending", iso.status
26
+ end
27
+
28
+ def test_retrieve
29
+ iso_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b604"
30
+ stub = stub_request("iso/#{iso_id}", response: stub_response(fixture: "isos/retrieve"))
31
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
32
+ iso = client.iso.retrieve(iso_id: iso_id)
33
+
34
+ keys = [:id, :date_created, :filename, :size, :md5sum, :sha512sum, :status]
35
+ assert_equal Vultr::Iso, iso.class
36
+ assert_equal keys, iso.to_h.keys
37
+ end
38
+
39
+ def test_delete
40
+ iso_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b604"
41
+ stub = stub_request("iso/#{iso_id}", method: :delete, response: {})
42
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
43
+
44
+ assert client.iso.delete(iso_id: iso_id)
45
+ end
46
+
47
+ def test_list_public
48
+ stub = stub_request("iso-public", response: stub_response(fixture: "isos/list_public"))
49
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
50
+ iso = client.iso.list_public
51
+
52
+ keys = [:id, :name, :description, :md5sum]
53
+ assert_equal Vultr::Collection, iso.class
54
+ assert_equal Vultr::Iso, iso.data.first.class
55
+ assert_equal keys, iso.data.first.to_h.keys
56
+ assert_equal 1, iso.total
57
+ end
58
+ end
@@ -0,0 +1,185 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class KubernetesResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("kubernetes/clusters", response: stub_response(fixture: "kubernetes/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ kubernetes = client.kubernetes.list
10
+
11
+ assert_equal Vultr::Collection, kubernetes.class
12
+ assert_equal Vultr::KubernetesCluster, kubernetes.data.first.class
13
+ assert_equal 2, kubernetes.total
14
+ assert_equal "next", kubernetes.next_cursor
15
+ assert_equal "prev", kubernetes.prev_cursor
16
+ end
17
+
18
+ def test_create
19
+ body = {label: "vke", region: "lax", version: "v1.20.0+1", node_pools: [{node_quantity: 2, label: "my-label", plan: "vc2-1c-2gb"}]}
20
+ stub = stub_request("kubernetes/clusters", method: :post, body: body, response: stub_response(fixture: "kubernetes/create", status: 201))
21
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
22
+ kubernetes = client.kubernetes.create(**body)
23
+
24
+ assert_equal kubernetes.id, "455dcd32-e621-48ee-a10e-0cb5f754e13e"
25
+ assert_equal kubernetes.label, "vke"
26
+ assert_equal kubernetes.date_created, Time.parse("2021-07-07T22:57:01+00:00")
27
+ assert_equal kubernetes.cluster_subnet, "10.244.0.0/16"
28
+ assert_equal kubernetes.service_subnet, "10.96.0.0/12"
29
+ assert_equal kubernetes.ip, "0.0.0.0"
30
+ assert_equal kubernetes.endpoint, "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com"
31
+ assert_equal kubernetes.version, "v1.20.0+1"
32
+ assert_equal kubernetes.region, "lax"
33
+ assert_equal kubernetes.status, "pending"
34
+ assert_equal kubernetes.node_pools.class, Array
35
+ end
36
+
37
+ def test_retrieve
38
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
39
+ stub = stub_request("kubernetes/clusters/#{vke_id}", response: stub_response(fixture: "kubernetes/retrieve"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ vke_cluster = client.kubernetes.retrieve(vke_id: vke_id)
42
+
43
+ assert_equal vke_cluster.id, "455dcd32-e621-48ee-a10e-0cb5f754e13e"
44
+ assert_equal vke_cluster.label, "vke"
45
+ assert_equal vke_cluster.date_created, Time.parse("2021-07-07T22:57:01+00:00")
46
+ assert_equal vke_cluster.cluster_subnet, "10.244.0.0/16"
47
+ assert_equal vke_cluster.service_subnet, "10.96.0.0/12"
48
+ assert_equal vke_cluster.ip, "207.246.109.187"
49
+ assert_equal vke_cluster.endpoint, "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com"
50
+ assert_equal vke_cluster.version, "v1.20.0+1"
51
+ assert_equal vke_cluster.region, "lax"
52
+ assert_equal vke_cluster.status, "active"
53
+ assert_equal vke_cluster.node_pools.class, Array
54
+ end
55
+
56
+ def test_update
57
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
58
+ body = {label: "My New Label"}
59
+ stub = stub_request("kubernetes/clusters/#{vke_id}", method: :put, body: body, response: {})
60
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
61
+ assert client.kubernetes.update(vke_id: vke_id, **body)
62
+ end
63
+
64
+ def test_delete
65
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
66
+ stub = stub_request("kubernetes/clusters/#{vke_id}", method: :delete, response: {})
67
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
68
+
69
+ assert client.kubernetes.delete(vke_id: vke_id)
70
+ end
71
+
72
+ def test_config
73
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
74
+ stub = stub_request("kubernetes/clusters/#{vke_id}/config", response: stub_response(fixture: "kubernetes/config"))
75
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
76
+ vke_cluster = client.kubernetes.config(vke_id: vke_id)
77
+
78
+ assert_equal vke_cluster.kube_config, "kube_config"
79
+ end
80
+
81
+ def test_list_resources
82
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
83
+ stub = stub_request("kubernetes/clusters/#{vke_id}/resources", response: stub_response(fixture: "kubernetes/list_resources"))
84
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
85
+ vke_cluster = client.kubernetes.list_resources(vke_id: vke_id)
86
+
87
+ assert_equal vke_cluster.block_storage.class, Array
88
+ assert_equal vke_cluster.load_balancer.class, Array
89
+ end
90
+
91
+ def test_list_node_pools
92
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
93
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools", response: stub_response(fixture: "kubernetes/list_node_pools"))
94
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
95
+ node_pools = client.kubernetes.list_node_pools(vke_id: vke_id)
96
+
97
+ assert_equal Vultr::Collection, node_pools.class
98
+ assert_equal Vultr::Object, node_pools.data.first.class
99
+ assert_equal 2, node_pools.total
100
+ assert_equal "next", node_pools.next_cursor
101
+ assert_equal "prev", node_pools.prev_cursor
102
+ end
103
+
104
+ def test_retrieve_node_pool
105
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
106
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
107
+
108
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", response: stub_response(fixture: "kubernetes/retrieve_node_pool"))
109
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
110
+ node_pool = client.kubernetes.retrieve_node_pool(vke_id: vke_id, nodepool_id: nodepool_id)
111
+
112
+ assert_equal node_pool.id, "e97bdee9-2781-4f31-be03-60fc75f399ae"
113
+ assert_equal node_pool.date_created, Time.parse("2021-07-07T23:27:08+00:00")
114
+ assert_equal node_pool.date_updated, Time.parse("2021-07-08T12:12:44+00:00")
115
+ assert_equal node_pool.label, "my-label-48770703"
116
+ assert_equal node_pool.plan_id, "vc2-1c-2gb"
117
+ assert_equal node_pool.status, "active"
118
+ assert_equal node_pool.count, 2
119
+ assert_equal node_pool.nodes.class, Array
120
+ end
121
+
122
+ def test_create_node_pool
123
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
124
+ body = {node_quantity: 2, label: "nodepool", paln: "vc2-lc-2gb"}
125
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools", method: :post, body: body, response: stub_response(fixture: "kubernetes/create_node_pool"))
126
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
127
+ node_pool = client.kubernetes.create_node_pool(vke_id: vke_id, **body)
128
+
129
+ assert_equal node_pool.id, "4130764b-5276-4552-546f-32513239732b"
130
+ assert_equal node_pool.date_created, Time.parse("2021-07-07T23:29:18+00:00")
131
+ assert_equal node_pool.date_updated, Time.parse("2021-07-08T23:29:18+00:00")
132
+ assert_equal node_pool.label, "nodepool-48770716"
133
+ assert_equal node_pool.plan_id, "vc2-1c-2gb"
134
+ assert_equal node_pool.status, "pending"
135
+ assert_equal node_pool.count, 2
136
+ assert_equal node_pool.nodes.class, Array
137
+ end
138
+
139
+ def test_update_node_pool
140
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
141
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
142
+ body = {node_quantity: 1}
143
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", method: :patch, body: body, response: stub_response(fixture: "kubernetes/update_node_pool"))
144
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
145
+ node_pool = client.kubernetes.update_node_pool(vke_id: vke_id, nodepool_id: nodepool_id, **body)
146
+
147
+ assert_equal node_pool.id, "e97bdee9-2781-4f31-be03-60fc75f399ae"
148
+ assert_equal node_pool.date_created, Time.parse("2021-07-07T23:27:08+00:00")
149
+ assert_equal node_pool.date_updated, Time.parse("2021-07-08T12:12:44+00:00")
150
+ assert_equal node_pool.label, "my-label-48770703"
151
+ assert_equal node_pool.plan_id, "vc2-1c-2gb"
152
+ assert_equal node_pool.status, "active"
153
+ assert_equal node_pool.count, 1
154
+ assert_equal node_pool.nodes.class, Array
155
+ end
156
+
157
+ def test_delete_node_pool
158
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
159
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
160
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", method: :delete, response: {})
161
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
162
+
163
+ assert client.kubernetes.delete_node_pool(vke_id: vke_id, nodepool_id: nodepool_id)
164
+ end
165
+
166
+ def test_delete_node_pool_instance
167
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
168
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
169
+ node_id = "ab809b79-1358-4c59-8c8e-b73add699bf9"
170
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}/nodes/#{node_id}", method: :delete, response: {})
171
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
172
+
173
+ assert client.kubernetes.delete_node_pool_instance(vke_id: vke_id, nodepool_id: nodepool_id, node_id: node_id)
174
+ end
175
+
176
+ def test_recycle_node_pool_instance
177
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
178
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
179
+ node_id = "ab809b79-1358-4c59-8c8e-b73add699bf9"
180
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}/nodes/#{node_id}/recycle", method: :post, response: {})
181
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
182
+
183
+ assert client.kubernetes.recycle_node_pool_instance(vke_id: vke_id, nodepool_id: nodepool_id, node_id: node_id)
184
+ end
185
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class LoadBalancersResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("load-balancers", response: stub_response(fixture: "load_balancers/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ load_balancers = client.load_balancers.list
10
+
11
+ assert_equal Vultr::Collection, load_balancers.class
12
+ assert_equal Vultr::LoadBalancer, load_balancers.data.first.class
13
+ assert_equal 1, load_balancers.total
14
+ end
15
+
16
+ def test_create
17
+ body = {region: "ewr", balancing_algorithm: "roundrobin", label: "Example Load Balancer"}
18
+ stub = stub_request("load-balancers", method: :post, body: body, response: stub_response(fixture: "load_balancers/create"))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ load_balancer = client.load_balancers.create(**body)
21
+
22
+ assert_equal Vultr::LoadBalancer, load_balancer.class
23
+ assert_equal "Example Load Balancer", load_balancer.label
24
+ end
25
+
26
+ def test_retrieve
27
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("load-balancers/#{load_balancer_id}", response: stub_response(fixture: "load_balancers/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ load_balancer = client.load_balancers.retrieve(load_balancer_id: load_balancer_id)
31
+
32
+ assert_equal Vultr::LoadBalancer, load_balancer.class
33
+ assert_equal "Example Load Balancer", load_balancer.label
34
+ end
35
+
36
+ def test_update
37
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ body = {balancing_algorithm: "Changed"}
39
+ stub = stub_request("load-balancers/#{load_balancer_id}", method: :patch, body: body, response: stub_response(fixture: "load_balancers/update"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ assert client.load_balancers.update(load_balancer_id: load_balancer_id, **body)
42
+ end
43
+
44
+ def test_delete
45
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
46
+ stub = stub_request("load-balancers/#{load_balancer_id}", method: :delete, response: stub_response(fixture: "load_balancers/delete"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.load_balancers.delete(load_balancer_id: load_balancer_id)
49
+ end
50
+
51
+ def test_list_forwarding_rules
52
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
53
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules", response: stub_response(fixture: "load_balancers/list_forwarding_rules"))
54
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
55
+ forwarding_rules = client.load_balancers.list_forwarding_rules(load_balancer_id: load_balancer_id)
56
+
57
+ assert Vultr::Collection, forwarding_rules.class
58
+ assert Vultr::Object, forwarding_rules.data.first.class
59
+ assert 1, forwarding_rules.total
60
+ end
61
+
62
+ def test_create_forwarding_rule
63
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
64
+ body = {frontend_protocol: "http", frontend_port: 8080, backend_protocol: "http", backend_port: 80}
65
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules", method: :post, body: body, response: stub_response(fixture: "load_balancers/create_forwarding_rule"))
66
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
67
+ assert client.load_balancers.create_forwarding_rule(load_balancer_id: load_balancer_id, **body)
68
+ end
69
+
70
+ def test_retrieve_forwarding_rule
71
+ load_balancer_id = "load-balancer-id"
72
+ forwarding_rule_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
73
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules/#{forwarding_rule_id}", response: stub_response(fixture: "load_balancers/retrieve_forwarding_rule"))
74
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
75
+ forwarding_rule = client.load_balancers.retrieve_forwarding_rule(load_balancer_id: load_balancer_id, forwarding_rule_id: forwarding_rule_id)
76
+
77
+ assert Vultr::Object, forwarding_rule.class
78
+ assert "http", forwarding_rule.frontend_protocol
79
+ end
80
+
81
+ def test_delete_forwarding_rule
82
+ load_balancer_id = "load-balancer-id"
83
+ forwarding_rule_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
84
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules/#{forwarding_rule_id}", method: :delete, response: stub_response(fixture: "load_balancers/delete_forwarding_rule"))
85
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
86
+ assert client.load_balancers.delete_forwarding_rule(load_balancer_id: load_balancer_id, forwarding_rule_id: forwarding_rule_id)
87
+ end
88
+
89
+ def test_list_firewall_rules
90
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
91
+ stub = stub_request("load-balancers/#{load_balancer_id}/firewall-rules", response: stub_response(fixture: "load_balancers/list_firewall_rules"))
92
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
93
+ firewall_rules = client.load_balancers.list_firewall_rules(load_balancer_id: load_balancer_id)
94
+
95
+ assert Vultr::Collection, firewall_rules.class
96
+ assert Vultr::Object, firewall_rules.data.first.class
97
+ assert 1, firewall_rules.total
98
+ end
99
+
100
+ def test_retrieve_firewall_rule
101
+ load_balancer_id = "load-balancer-id"
102
+ firewall_rule_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
103
+ stub = stub_request("load-balancers/#{load_balancer_id}/firewall-rules/#{firewall_rule_id}", response: stub_response(fixture: "load_balancers/retrieve_firewall_rule"))
104
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
105
+ firewall_rule = client.load_balancers.retrieve_firewall_rule(load_balancer_id: load_balancer_id, firewall_rule_id: firewall_rule_id)
106
+
107
+ assert Vultr::Object, firewall_rule
108
+ assert 80, firewall_rule.port
109
+ end
110
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class ObjectStorageResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("object-storage", response: stub_response(fixture: "object_storage/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ object_storage = client.object_storage.list
10
+
11
+ assert_equal Vultr::Collection, object_storage.class
12
+ assert_equal Vultr::ObjectStorage, object_storage.data.first.class
13
+ assert_equal 1, object_storage.total
14
+ end
15
+
16
+ def test_create
17
+ body = {label: "Example Object Storage", cluster_id: 2}
18
+ stub = stub_request("object-storage", method: :post, body: body, response: stub_response(fixture: "object_storage/create"))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ object_storage = client.object_storage.create(**body)
21
+
22
+ assert_equal Vultr::ObjectStorage, object_storage.class
23
+ assert_equal "Example Object Storage", object_storage.label
24
+ end
25
+
26
+ def test_retrieve
27
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("object-storage/#{object_storage_id}", response: stub_response(fixture: "object_storage/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ object_storage = client.object_storage.retrieve(object_storage_id: object_storage_id)
31
+
32
+ assert_equal Vultr::ObjectStorage, object_storage.class
33
+ assert_equal "Example Object Storage", object_storage.label
34
+ end
35
+
36
+ def test_update
37
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ body = {label: "Updated Object Storage Label"}
39
+ stub = stub_request("object-storage/#{object_storage_id}", method: :put, body: body, response: stub_response(fixture: "object_storage/create"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ assert client.object_storage.update(object_storage_id: object_storage_id, **body)
42
+ end
43
+
44
+ def test_delete
45
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
46
+ stub = stub_request("object-storage/#{object_storage_id}", method: :delete, response: stub_response(fixture: "object_storage/delete"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.object_storage.delete(object_storage_id: object_storage_id)
49
+ end
50
+
51
+ def test_regenerate_keys
52
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
53
+ stub = stub_request("object-storage/#{object_storage_id}/regenerate-keys", method: :post, response: stub_response(fixture: "object_storage/regenerate_keys", status: 201))
54
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
55
+ object_storage_keys = client.object_storage.regenerate_keys(object_storage_id: object_storage_id)
56
+
57
+ assert_equal "ewr1.vultrobjects.com", object_storage_keys.dig("s3_credentials", "s3_hostname")
58
+ assert_equal "00example11223344", object_storage_keys.dig("s3_credentials", "s3_access_key")
59
+ assert_equal "00example1122334455667788990011", object_storage_keys.dig("s3_credentials", "s3_secret_key")
60
+ end
61
+
62
+ def test_list_clusters
63
+ stub = stub_request("object-storage/clusters", response: stub_response(fixture: "object_storage/list_clusters"))
64
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
65
+ clusters = client.object_storage.list_clusters
66
+
67
+ assert_equal Vultr::Collection, clusters.class
68
+ assert_equal Vultr::Object, clusters.data.first.class
69
+ assert_equal 1, clusters.total
70
+ end
71
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class OperatingSystemsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("os", response: stub_response(fixture: "operating_systems/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ operating_systems = client.operating_systems.list
10
+
11
+ assert_equal Vultr::Collection, operating_systems.class
12
+ assert_equal Vultr::OperatingSystem, operating_systems.data.first.class
13
+ assert_equal 1, operating_systems.total
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class PlansResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("plans", response: stub_response(fixture: "plans/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ plans = client.plans.list
10
+
11
+ assert_equal Vultr::Collection, plans.class
12
+ assert_equal Vultr::Plan, plans.data.first.class
13
+ assert_equal 1, plans.total
14
+ end
15
+
16
+ def test_list_metal
17
+ stub = stub_request("plans-metal", response: stub_response(fixture: "plans/list_metal"))
18
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
19
+ plans = client.plans.list_metal
20
+
21
+ assert_equal Vultr::Collection, plans.class
22
+ assert_equal Vultr::Plan, plans.data.first.class
23
+ assert_equal 1, plans.total
24
+ end
25
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class PrivateNetworksResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("private-networks", response: stub_response(fixture: "private_networks/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ private_networks = client.private_networks.list
10
+
11
+ assert_equal Vultr::Collection, private_networks.class
12
+ assert_equal Vultr::PrivateNetwork, private_networks.data.first.class
13
+ assert_equal 1, private_networks.total
14
+ end
15
+
16
+ def test_create
17
+ body = {region: "ewr", description: "Example Private Network", v4_subnet: "10.99.0.0", v4_subnet_mask: 24}
18
+ stub = stub_request("private-networks", method: :post, body: body, response: stub_response(fixture: "private_networks/create", status: 201))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ private_network = client.private_networks.create(**body)
21
+
22
+ assert_equal Vultr::PrivateNetwork, private_network.class
23
+ assert_equal "Example Private Network", private_network.description
24
+ end
25
+
26
+ def test_retrieve
27
+ private_network_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("private-networks/#{private_network_id}", response: stub_response(fixture: "private_networks/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ private_network = client.private_networks.retrieve(network_id: private_network_id)
31
+
32
+ assert_equal Vultr::PrivateNetwork, private_network.class
33
+ assert_equal "Example Network Description", private_network.description
34
+ end
35
+
36
+ def test_update
37
+ private_network_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ body = {description: "Example Private Network"}
39
+ stub = stub_request("private-networks/#{private_network_id}", method: :put, body: body, response: stub_response(fixture: "private_networks/update"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ assert client.private_networks.update(network_id: private_network_id, **body)
42
+ end
43
+
44
+ def test_delete
45
+ private_network_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
46
+ stub = stub_request("private-networks/#{private_network_id}", method: :delete, response: stub_response(fixture: "private_networks/delete"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.private_networks.delete(network_id: private_network_id)
49
+ end
50
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class RegionsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("regions", response: stub_response(fixture: "regions/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ regions = client.regions.list
10
+
11
+ assert_equal Vultr::Collection, regions.class
12
+ assert_equal Vultr::Region, regions.data.first.class
13
+ assert_equal 1, regions.total
14
+ end
15
+
16
+ def test_list_availability
17
+ region_id = "all"
18
+ stub = stub_request("regions/#{region_id}/availability", response: stub_response(fixture: "regions/list_availability"))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ availabilities = client.regions.list_availability(region_id: region_id)
21
+
22
+ assert_equal Vultr::Object, availabilities.class
23
+ assert_equal availabilities.available_plans.first, "vc2-1c-1gb"
24
+ assert_equal availabilities.available_plans.size, 20
25
+ end
26
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class ReservedIpsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("reserved-ips", response: stub_response(fixture: "reserved_ips/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ reserved_ips = client.reserved_ips.list
10
+
11
+ assert_equal Vultr::Collection, reserved_ips.class
12
+ assert_equal Vultr::ReservedIp, reserved_ips.data.first.class
13
+ assert_equal 2, reserved_ips.total
14
+ end
15
+
16
+ def test_create
17
+ body = {region: "ewr", ip_type: "v4", label: "Example Reserved IPv4"}
18
+ stub = stub_request("reserved-ips", method: :post, body: body, response: stub_response(fixture: "reserved_ips/create", status: 201))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ reserved_ip = client.reserved_ips.create(**body)
21
+
22
+ assert_equal Vultr::ReservedIp, reserved_ip.class
23
+ assert_equal "Example Reserved IPv4", reserved_ip.label
24
+ end
25
+
26
+ def test_retrieve
27
+ reserved_ip_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("reserved-ips/#{reserved_ip_id}", response: stub_response(fixture: "reserved_ips/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ reserved_ip = client.reserved_ips.retrieve(reserved_ip: reserved_ip_id)
31
+
32
+ assert_equal Vultr::ReservedIp, reserved_ip.class
33
+ assert_equal "Example Reserved IPv4", reserved_ip.label
34
+ end
35
+
36
+ def test_delete
37
+ reserved_ip_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ stub = stub_request("reserved-ips/#{reserved_ip_id}", method: :delete, response: stub_response(fixture: "reserved_ips/retrieve"))
39
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
40
+ assert client.reserved_ips.delete(reserved_ip: reserved_ip_id)
41
+ end
42
+
43
+ def test_attach
44
+ reserved_ip_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
45
+ body = {instance_id: "3f26dfe9-6a18-4f3d-a543-0cbca7a3e496"}
46
+ stub = stub_request("reserved-ips/#{reserved_ip_id}/attach", method: :post, body: body, response: stub_response(fixture: "reserved_ips/attach"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.reserved_ips.attach(reserved_ip: reserved_ip_id, instance_id: body[:instance_id])
49
+ end
50
+
51
+ def test_detach
52
+ reserved_ip_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
53
+ stub = stub_request("reserved-ips/#{reserved_ip_id}/detach", method: :post, response: stub_response(fixture: "reserved_ips/attach"))
54
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
55
+ assert client.reserved_ips.detach(reserved_ip: reserved_ip_id)
56
+ end
57
+
58
+ def test_convert
59
+ body = {ip_address: "192.0.2.123", label: "Example Reserved IPv4"}
60
+ stub = stub_request("reserved-ips/convert", method: :post, body: body, response: stub_response(fixture: "reserved_ips/convert", status: 201))
61
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
62
+ reserved_ip = client.reserved_ips.convert(**body)
63
+
64
+ assert Vultr::ReservedIp, reserved_ip.class
65
+ assert "Example Resreved IPv4", reserved_ip.label
66
+ end
67
+ end