vultr 0.4.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +32 -0
  3. data/CHANGELOG.md +4 -0
  4. data/Gemfile +5 -10
  5. data/README.md +306 -136
  6. data/Rakefile +10 -6
  7. data/bin/console +21 -0
  8. data/bin/setup +8 -0
  9. data/bin/test +6 -0
  10. data/lib/vultr/client.rb +111 -0
  11. data/lib/vultr/collection.rb +22 -0
  12. data/lib/vultr/error.rb +4 -0
  13. data/lib/vultr/object.rb +19 -0
  14. data/lib/vultr/objects/account.rb +4 -0
  15. data/lib/vultr/objects/application.rb +4 -0
  16. data/lib/vultr/objects/backup.rb +4 -0
  17. data/lib/vultr/objects/bare_metal.rb +4 -0
  18. data/lib/vultr/objects/block_storage.rb +4 -0
  19. data/lib/vultr/objects/domain.rb +4 -0
  20. data/lib/vultr/objects/firewall_group.rb +4 -0
  21. data/lib/vultr/objects/instance.rb +4 -0
  22. data/lib/vultr/objects/iso.rb +4 -0
  23. data/lib/vultr/objects/kubernetes_cluster.rb +4 -0
  24. data/lib/vultr/objects/load_balancer.rb +4 -0
  25. data/lib/vultr/objects/object_storage.rb +4 -0
  26. data/lib/vultr/objects/operating_system.rb +4 -0
  27. data/lib/vultr/objects/plan.rb +4 -0
  28. data/lib/vultr/objects/private_network.rb +4 -0
  29. data/lib/vultr/objects/region.rb +4 -0
  30. data/lib/vultr/objects/reserved_ip.rb +4 -0
  31. data/lib/vultr/objects/snapshot.rb +4 -0
  32. data/lib/vultr/objects/ssh_key.rb +4 -0
  33. data/lib/vultr/objects/startup_script.rb +4 -0
  34. data/lib/vultr/objects/user.rb +4 -0
  35. data/lib/vultr/resource.rb +52 -0
  36. data/lib/vultr/resources/account.rb +7 -0
  37. data/lib/vultr/resources/applications.rb +8 -0
  38. data/lib/vultr/resources/backups.rb +12 -0
  39. data/lib/vultr/resources/bare_metal.rb +79 -0
  40. data/lib/vultr/resources/block_storage.rb +32 -0
  41. data/lib/vultr/resources/dns.rb +58 -0
  42. data/lib/vultr/resources/firewall.rb +42 -0
  43. data/lib/vultr/resources/instances.rb +145 -0
  44. data/lib/vultr/resources/iso.rb +25 -0
  45. data/lib/vultr/resources/kubernetes.rb +61 -0
  46. data/lib/vultr/resources/load_balancers.rb +50 -0
  47. data/lib/vultr/resources/object_storage.rb +33 -0
  48. data/lib/vultr/resources/operating_systems.rb +8 -0
  49. data/lib/vultr/resources/plans.rb +13 -0
  50. data/lib/vultr/resources/private_networks.rb +24 -0
  51. data/lib/vultr/resources/regions.rb +12 -0
  52. data/lib/vultr/resources/reserved_ips.rb +32 -0
  53. data/lib/vultr/resources/snapshots.rb +28 -0
  54. data/lib/vultr/resources/ssh_keys.rb +24 -0
  55. data/lib/vultr/resources/startup_scripts.rb +24 -0
  56. data/lib/vultr/resources/users.rb +24 -0
  57. data/lib/vultr/version.rb +1 -8
  58. data/lib/vultr.rb +56 -887
  59. data/test/fixtures/account/info.json +11 -0
  60. data/test/fixtures/applications/list.json +29 -0
  61. data/test/fixtures/backups/list.json +18 -0
  62. data/test/fixtures/backups/retrieve.json +9 -0
  63. data/test/fixtures/bare_metals/bandwidth.json +12 -0
  64. data/test/fixtures/bare_metals/create.json +26 -0
  65. data/test/fixtures/bare_metals/list.json +36 -0
  66. data/test/fixtures/bare_metals/list_ipv4.json +18 -0
  67. data/test/fixtures/bare_metals/list_ipv6.json +17 -0
  68. data/test/fixtures/bare_metals/reinstall.json +25 -0
  69. data/test/fixtures/bare_metals/retrieve.json +26 -0
  70. data/test/fixtures/bare_metals/update.json +26 -0
  71. data/test/fixtures/bare_metals/upgrades.json +47 -0
  72. data/test/fixtures/bare_metals/user_data.json +5 -0
  73. data/test/fixtures/bare_metals/vnc.json +5 -0
  74. data/test/fixtures/block_storage/attach.json +4 -0
  75. data/test/fixtures/block_storage/create.json +13 -0
  76. data/test/fixtures/block_storage/detach.json +4 -0
  77. data/test/fixtures/block_storage/list.json +22 -0
  78. data/test/fixtures/block_storage/retrieve.json +13 -0
  79. data/test/fixtures/domains/create.json +6 -0
  80. data/test/fixtures/domains/dnssec.json +7 -0
  81. data/test/fixtures/domains/list.json +15 -0
  82. data/test/fixtures/domains/record.json +10 -0
  83. data/test/fixtures/domains/records.json +19 -0
  84. data/test/fixtures/domains/retrieve.json +6 -0
  85. data/test/fixtures/domains/soa.json +6 -0
  86. data/test/fixtures/firewall/create.json +11 -0
  87. data/test/fixtures/firewall/create_rule.json +9 -0
  88. data/test/fixtures/firewall/delete.json +1 -0
  89. data/test/fixtures/firewall/delete_rule.json +1 -0
  90. data/test/fixtures/firewall/list.json +20 -0
  91. data/test/fixtures/firewall/list_rules.json +22 -0
  92. data/test/fixtures/firewall/retrieve.json +11 -0
  93. data/test/fixtures/firewall/retrieve_rule.json +13 -0
  94. data/test/fixtures/firewall/update.json +1 -0
  95. data/test/fixtures/instances/attach_iso.json +6 -0
  96. data/test/fixtures/instances/attach_private_network.json +1 -0
  97. data/test/fixtures/instances/backup_schedule.json +10 -0
  98. data/test/fixtures/instances/bandwidth.json +12 -0
  99. data/test/fixtures/instances/create.json +36 -0
  100. data/test/fixtures/instances/create_ipv4_reverse.json +1 -0
  101. data/test/fixtures/instances/create_ipv6_reverse.json +1 -0
  102. data/test/fixtures/instances/delete.json +1 -0
  103. data/test/fixtures/instances/delete_ipv4.json +1 -0
  104. data/test/fixtures/instances/delete_ipv6.json +1 -0
  105. data/test/fixtures/instances/detach_iso.json +5 -0
  106. data/test/fixtures/instances/detach_private_network.json +1 -0
  107. data/test/fixtures/instances/halt.json +1 -0
  108. data/test/fixtures/instances/halt_instances.json +1 -0
  109. data/test/fixtures/instances/ipv4.json +9 -0
  110. data/test/fixtures/instances/ipv6_reverse.json +15 -0
  111. data/test/fixtures/instances/iso.json +6 -0
  112. data/test/fixtures/instances/list.json +44 -0
  113. data/test/fixtures/instances/list_ipv4.json +32 -0
  114. data/test/fixtures/instances/list_ipv6.json +17 -0
  115. data/test/fixtures/instances/list_private_networks.json +16 -0
  116. data/test/fixtures/instances/neighbors.json +6 -0
  117. data/test/fixtures/instances/reboot.json +1 -0
  118. data/test/fixtures/instances/reboot_instances.json +1 -0
  119. data/test/fixtures/instances/reinstall.json +35 -0
  120. data/test/fixtures/instances/restore.json +7 -0
  121. data/test/fixtures/instances/retrieve.json +35 -0
  122. data/test/fixtures/instances/set_backup_schedule.json +1 -0
  123. data/test/fixtures/instances/set_default_reverse_dns_entry.json +1 -0
  124. data/test/fixtures/instances/start.json +1 -0
  125. data/test/fixtures/instances/start_instances.json +1 -0
  126. data/test/fixtures/instances/update.json +1 -0
  127. data/test/fixtures/instances/upgrades.json +55 -0
  128. data/test/fixtures/instances/user_data.json +5 -0
  129. data/test/fixtures/isos/create.json +8 -0
  130. data/test/fixtures/isos/list.json +20 -0
  131. data/test/fixtures/isos/list_public.json +17 -0
  132. data/test/fixtures/isos/retrieve.json +11 -0
  133. data/test/fixtures/kubernetes/config.json +3 -0
  134. data/test/fixtures/kubernetes/create.json +39 -0
  135. data/test/fixtures/kubernetes/create_node_pool.json +25 -0
  136. data/test/fixtures/kubernetes/list.json +85 -0
  137. data/test/fixtures/kubernetes/list_node_pools.json +56 -0
  138. data/test/fixtures/kubernetes/list_resources.json +26 -0
  139. data/test/fixtures/kubernetes/retrieve.json +39 -0
  140. data/test/fixtures/kubernetes/retrieve_node_pool.json +25 -0
  141. data/test/fixtures/kubernetes/update_node_pool.json +19 -0
  142. data/test/fixtures/load_balancers/create.json +48 -0
  143. data/test/fixtures/load_balancers/create_forwarding_rule.json +1 -0
  144. data/test/fixtures/load_balancers/delete.json +1 -0
  145. data/test/fixtures/load_balancers/delete_forwarding_rule.json +1 -0
  146. data/test/fixtures/load_balancers/list.json +57 -0
  147. data/test/fixtures/load_balancers/list_firewall_rules.json +17 -0
  148. data/test/fixtures/load_balancers/list_forwarding_rules.json +18 -0
  149. data/test/fixtures/load_balancers/retrieve.json +48 -0
  150. data/test/fixtures/load_balancers/retrieve_firewall_rule.json +8 -0
  151. data/test/fixtures/load_balancers/retrieve_forwarding_rule.json +9 -0
  152. data/test/fixtures/load_balancers/update.json +1 -0
  153. data/test/fixtures/object_storage/create.json +14 -0
  154. data/test/fixtures/object_storage/delete.json +1 -0
  155. data/test/fixtures/object_storage/list.json +22 -0
  156. data/test/fixtures/object_storage/list_clusters.json +17 -0
  157. data/test/fixtures/object_storage/regenerate_keys.json +7 -0
  158. data/test/fixtures/object_storage/retrieve.json +13 -0
  159. data/test/fixtures/object_storage/update.json +1 -0
  160. data/test/fixtures/operating_systems/list.json +17 -0
  161. data/test/fixtures/plans/list.json +22 -0
  162. data/test/fixtures/plans/list_metal.json +24 -0
  163. data/test/fixtures/private_networks/create.json +10 -0
  164. data/test/fixtures/private_networks/delete.json +1 -0
  165. data/test/fixtures/private_networks/list.json +19 -0
  166. data/test/fixtures/private_networks/retrieve.json +10 -0
  167. data/test/fixtures/private_networks/update.json +1 -0
  168. data/test/fixtures/regions/list.json +20 -0
  169. data/test/fixtures/regions/list_availability.json +24 -0
  170. data/test/fixtures/reserved_ips/attach.json +1 -0
  171. data/test/fixtures/reserved_ips/convert.json +11 -0
  172. data/test/fixtures/reserved_ips/create.json +11 -0
  173. data/test/fixtures/reserved_ips/delete.json +1 -0
  174. data/test/fixtures/reserved_ips/detach.json +1 -0
  175. data/test/fixtures/reserved_ips/list.json +29 -0
  176. data/test/fixtures/reserved_ips/retrieve.json +11 -0
  177. data/test/fixtures/snapshots/create.json +11 -0
  178. data/test/fixtures/snapshots/create_from_url.json +11 -0
  179. data/test/fixtures/snapshots/delete.json +1 -0
  180. data/test/fixtures/snapshots/list.json +20 -0
  181. data/test/fixtures/snapshots/retrieve.json +11 -0
  182. data/test/fixtures/snapshots/update.json +1 -0
  183. data/test/fixtures/ssh_keys/create.json +8 -0
  184. data/test/fixtures/ssh_keys/delete.json +1 -0
  185. data/test/fixtures/ssh_keys/list.json +17 -0
  186. data/test/fixtures/ssh_keys/retrieve.json +8 -0
  187. data/test/fixtures/ssh_keys/update.json +1 -0
  188. data/test/fixtures/startup_scripts/create.json +10 -0
  189. data/test/fixtures/startup_scripts/delete.json +1 -0
  190. data/test/fixtures/startup_scripts/list.json +18 -0
  191. data/test/fixtures/startup_scripts/retrieve.json +10 -0
  192. data/test/fixtures/startup_scripts/update.json +1 -0
  193. data/test/fixtures/users/create.json +9 -0
  194. data/test/fixtures/users/delete.json +1 -0
  195. data/test/fixtures/users/list.json +29 -0
  196. data/test/fixtures/users/retrieve.json +20 -0
  197. data/test/fixtures/users/update.json +1 -0
  198. data/test/test_helper.rb +18 -5
  199. data/test/vultr/client_test.rb +8 -0
  200. data/test/vultr/object_test.rb +21 -0
  201. data/test/vultr/resources/account_test.rb +12 -0
  202. data/test/vultr/resources/applications_test.rb +15 -0
  203. data/test/vultr/resources/backups_test.rb +24 -0
  204. data/test/vultr/resources/bare_metal_test.rb +267 -0
  205. data/test/vultr/resources/block_storage_test.rb +85 -0
  206. data/test/vultr/resources/dns_test.rb +134 -0
  207. data/test/vultr/resources/firewall_test.rb +88 -0
  208. data/test/vultr/resources/instances_test.rb +325 -0
  209. data/test/vultr/resources/iso_test.rb +58 -0
  210. data/test/vultr/resources/kubernetes_test.rb +185 -0
  211. data/test/vultr/resources/load_balancers_test.rb +110 -0
  212. data/test/vultr/resources/object_storage_test.rb +71 -0
  213. data/test/vultr/resources/operating_systems_test.rb +15 -0
  214. data/test/vultr/resources/plans_test.rb +25 -0
  215. data/test/vultr/resources/private_networks_test.rb +50 -0
  216. data/test/vultr/resources/regions_test.rb +26 -0
  217. data/test/vultr/resources/reserved_ips_test.rb +67 -0
  218. data/test/vultr/resources/snapshots_test.rb +60 -0
  219. data/test/vultr/resources/ssh_keys_test.rb +50 -0
  220. data/test/vultr/resources/startup_scripts_test.rb +50 -0
  221. data/test/vultr/resources/users_test.rb +50 -0
  222. data/vultr.gemspec +17 -17
  223. metadata +394 -48
  224. data/test/vultr/vultr_account_test.rb +0 -29
  225. data/test/vultr/vultr_app_test.rb +0 -26
  226. data/test/vultr/vultr_backup_test.rb +0 -22
  227. data/test/vultr/vultr_iso_test.rb +0 -27
  228. data/test/vultr/vultr_os_test.rb +0 -21
  229. data/test/vultr/vultr_plan_test.rb +0 -22
  230. data/test/vultr/vultr_region_test.rb +0 -33
  231. data/test/vultr/vultr_snapshot_test.rb +0 -30
  232. data/test/vultr/vultr_sshkey_test.rb +0 -50
  233. data/test/vultr/vultr_startupscript_test.rb +0 -53
@@ -0,0 +1,19 @@
1
+ {
2
+ "networks": [
3
+ {
4
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
5
+ "region": "ewr",
6
+ "date_created": "2020-10-10T01:56:20+00:00",
7
+ "description": "Example Network Description",
8
+ "v4_subnet": "10.99.0.0",
9
+ "v4_subnet_mask": 24
10
+ }
11
+ ],
12
+ "meta": {
13
+ "total": 1,
14
+ "links": {
15
+ "next": "",
16
+ "prev": ""
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "network": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "date_created": "2020-10-10T01:56:20+00:00",
5
+ "region": "ewr",
6
+ "description": "Example Network Description",
7
+ "v4_subnet": "10.99.0.0",
8
+ "v4_subnet_mask": 24
9
+ }
10
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "regions": [
3
+ {
4
+ "id": "ams",
5
+ "city": "Amsterdam",
6
+ "country": "NL",
7
+ "continent": "Europe",
8
+ "options": [
9
+ "ddos_protection"
10
+ ]
11
+ }
12
+ ],
13
+ "meta": {
14
+ "total": 1,
15
+ "links": {
16
+ "next": "",
17
+ "prev": ""
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "available_plans": [
3
+ "vc2-1c-1gb",
4
+ "vc2-1c-2gb",
5
+ "vc2-2c-4gb",
6
+ "vc2-4c-8gb",
7
+ "vc2-6c-16gb",
8
+ "vc2-8c-32gb",
9
+ "vc2-16c-64gb",
10
+ "vc2-24c-96gb",
11
+ "vdc-4vcpu-8gb",
12
+ "vdc-4vcpu-16gb",
13
+ "vdc-6vcpu-24gb",
14
+ "vdc-8vcpu-32gb",
15
+ "vhf-1c-1gb",
16
+ "vhf-1c-2gb",
17
+ "vhf-2c-4gb",
18
+ "vhf-3c-8gb",
19
+ "vhf-4c-16gb",
20
+ "vhf-6c-24gb",
21
+ "vhf-8c-32gb",
22
+ "vhf-12c-48gb"
23
+ ]
24
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,11 @@
1
+ {
2
+ "reserved_ip": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "region": "ewr",
5
+ "ip_type": "v4",
6
+ "subnet": "192.0.2.123",
7
+ "subnet_size": 64,
8
+ "label": "Example Reserved IPv4",
9
+ "instance_id": "3f26dfe9-6a18-4f3d-a543-0cbca7a3e496"
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "reserved_ip": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "region": "ewr",
5
+ "ip_type": "v4",
6
+ "subnet": "192.0.2.123",
7
+ "subnet_size": 32,
8
+ "label": "Example Reserved IPv4",
9
+ "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,29 @@
1
+ {
2
+ "reserved_ips": [
3
+ {
4
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
5
+ "region": "ewr",
6
+ "ip_type": "v4",
7
+ "subnet": "192.0.2.123",
8
+ "subnet_size": 32,
9
+ "label": "Example Reserved IPv4",
10
+ "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
11
+ },
12
+ {
13
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
14
+ "region": "ewr",
15
+ "ip_type": "v6",
16
+ "subnet": "2001:0db8:5:5157::",
17
+ "subnet_size": 64,
18
+ "label": "Example Reserved IPv6",
19
+ "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
20
+ }
21
+ ],
22
+ "meta": {
23
+ "total": 2,
24
+ "links": {
25
+ "next": "",
26
+ "prev": ""
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "reserved_ip": {
3
+ "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
4
+ "region": "ewr",
5
+ "ip_type": "v4",
6
+ "subnet": "192.0.2.123",
7
+ "subnet_size": 32,
8
+ "label": "Example Reserved IPv4",
9
+ "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
10
+ }
11
+ }
@@ -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,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