vultr 0.4.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +32 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +5 -10
- data/README.md +306 -136
- data/Rakefile +10 -6
- data/bin/console +21 -0
- data/bin/setup +8 -0
- data/bin/test +6 -0
- data/lib/vultr/client.rb +111 -0
- data/lib/vultr/collection.rb +22 -0
- data/lib/vultr/error.rb +4 -0
- data/lib/vultr/object.rb +19 -0
- data/lib/vultr/objects/account.rb +4 -0
- data/lib/vultr/objects/application.rb +4 -0
- data/lib/vultr/objects/backup.rb +4 -0
- data/lib/vultr/objects/bare_metal.rb +4 -0
- data/lib/vultr/objects/block_storage.rb +4 -0
- data/lib/vultr/objects/domain.rb +4 -0
- data/lib/vultr/objects/firewall_group.rb +4 -0
- data/lib/vultr/objects/instance.rb +4 -0
- data/lib/vultr/objects/iso.rb +4 -0
- data/lib/vultr/objects/kubernetes_cluster.rb +4 -0
- data/lib/vultr/objects/load_balancer.rb +4 -0
- data/lib/vultr/objects/object_storage.rb +4 -0
- data/lib/vultr/objects/operating_system.rb +4 -0
- data/lib/vultr/objects/plan.rb +4 -0
- data/lib/vultr/objects/private_network.rb +4 -0
- data/lib/vultr/objects/region.rb +4 -0
- data/lib/vultr/objects/reserved_ip.rb +4 -0
- data/lib/vultr/objects/snapshot.rb +4 -0
- data/lib/vultr/objects/ssh_key.rb +4 -0
- data/lib/vultr/objects/startup_script.rb +4 -0
- data/lib/vultr/objects/user.rb +4 -0
- data/lib/vultr/resource.rb +52 -0
- data/lib/vultr/resources/account.rb +7 -0
- data/lib/vultr/resources/applications.rb +8 -0
- data/lib/vultr/resources/backups.rb +12 -0
- data/lib/vultr/resources/bare_metal.rb +79 -0
- data/lib/vultr/resources/block_storage.rb +32 -0
- data/lib/vultr/resources/dns.rb +58 -0
- data/lib/vultr/resources/firewall.rb +42 -0
- data/lib/vultr/resources/instances.rb +145 -0
- data/lib/vultr/resources/iso.rb +25 -0
- data/lib/vultr/resources/kubernetes.rb +61 -0
- data/lib/vultr/resources/load_balancers.rb +50 -0
- data/lib/vultr/resources/object_storage.rb +33 -0
- data/lib/vultr/resources/operating_systems.rb +8 -0
- data/lib/vultr/resources/plans.rb +13 -0
- data/lib/vultr/resources/private_networks.rb +24 -0
- data/lib/vultr/resources/regions.rb +12 -0
- data/lib/vultr/resources/reserved_ips.rb +32 -0
- data/lib/vultr/resources/snapshots.rb +28 -0
- data/lib/vultr/resources/ssh_keys.rb +24 -0
- data/lib/vultr/resources/startup_scripts.rb +24 -0
- data/lib/vultr/resources/users.rb +24 -0
- data/lib/vultr/version.rb +1 -8
- data/lib/vultr.rb +56 -887
- data/test/fixtures/account/info.json +11 -0
- data/test/fixtures/applications/list.json +29 -0
- data/test/fixtures/backups/list.json +18 -0
- data/test/fixtures/backups/retrieve.json +9 -0
- data/test/fixtures/bare_metals/bandwidth.json +12 -0
- data/test/fixtures/bare_metals/create.json +26 -0
- data/test/fixtures/bare_metals/list.json +36 -0
- data/test/fixtures/bare_metals/list_ipv4.json +18 -0
- data/test/fixtures/bare_metals/list_ipv6.json +17 -0
- data/test/fixtures/bare_metals/reinstall.json +25 -0
- data/test/fixtures/bare_metals/retrieve.json +26 -0
- data/test/fixtures/bare_metals/update.json +26 -0
- data/test/fixtures/bare_metals/upgrades.json +47 -0
- data/test/fixtures/bare_metals/user_data.json +5 -0
- data/test/fixtures/bare_metals/vnc.json +5 -0
- data/test/fixtures/block_storage/attach.json +4 -0
- data/test/fixtures/block_storage/create.json +13 -0
- data/test/fixtures/block_storage/detach.json +4 -0
- data/test/fixtures/block_storage/list.json +22 -0
- data/test/fixtures/block_storage/retrieve.json +13 -0
- data/test/fixtures/domains/create.json +6 -0
- data/test/fixtures/domains/dnssec.json +7 -0
- data/test/fixtures/domains/list.json +15 -0
- data/test/fixtures/domains/record.json +10 -0
- data/test/fixtures/domains/records.json +19 -0
- data/test/fixtures/domains/retrieve.json +6 -0
- data/test/fixtures/domains/soa.json +6 -0
- data/test/fixtures/firewall/create.json +11 -0
- data/test/fixtures/firewall/create_rule.json +9 -0
- data/test/fixtures/firewall/delete.json +1 -0
- data/test/fixtures/firewall/delete_rule.json +1 -0
- data/test/fixtures/firewall/list.json +20 -0
- data/test/fixtures/firewall/list_rules.json +22 -0
- data/test/fixtures/firewall/retrieve.json +11 -0
- data/test/fixtures/firewall/retrieve_rule.json +13 -0
- data/test/fixtures/firewall/update.json +1 -0
- data/test/fixtures/instances/attach_iso.json +6 -0
- data/test/fixtures/instances/attach_private_network.json +1 -0
- data/test/fixtures/instances/backup_schedule.json +10 -0
- data/test/fixtures/instances/bandwidth.json +12 -0
- data/test/fixtures/instances/create.json +36 -0
- data/test/fixtures/instances/create_ipv4_reverse.json +1 -0
- data/test/fixtures/instances/create_ipv6_reverse.json +1 -0
- data/test/fixtures/instances/delete.json +1 -0
- data/test/fixtures/instances/delete_ipv4.json +1 -0
- data/test/fixtures/instances/delete_ipv6.json +1 -0
- data/test/fixtures/instances/detach_iso.json +5 -0
- data/test/fixtures/instances/detach_private_network.json +1 -0
- data/test/fixtures/instances/halt.json +1 -0
- data/test/fixtures/instances/halt_instances.json +1 -0
- data/test/fixtures/instances/ipv4.json +9 -0
- data/test/fixtures/instances/ipv6_reverse.json +15 -0
- data/test/fixtures/instances/iso.json +6 -0
- data/test/fixtures/instances/list.json +44 -0
- data/test/fixtures/instances/list_ipv4.json +32 -0
- data/test/fixtures/instances/list_ipv6.json +17 -0
- data/test/fixtures/instances/list_private_networks.json +16 -0
- data/test/fixtures/instances/neighbors.json +6 -0
- data/test/fixtures/instances/reboot.json +1 -0
- data/test/fixtures/instances/reboot_instances.json +1 -0
- data/test/fixtures/instances/reinstall.json +35 -0
- data/test/fixtures/instances/restore.json +7 -0
- data/test/fixtures/instances/retrieve.json +35 -0
- data/test/fixtures/instances/set_backup_schedule.json +1 -0
- data/test/fixtures/instances/set_default_reverse_dns_entry.json +1 -0
- data/test/fixtures/instances/start.json +1 -0
- data/test/fixtures/instances/start_instances.json +1 -0
- data/test/fixtures/instances/update.json +1 -0
- data/test/fixtures/instances/upgrades.json +55 -0
- data/test/fixtures/instances/user_data.json +5 -0
- data/test/fixtures/isos/create.json +8 -0
- data/test/fixtures/isos/list.json +20 -0
- data/test/fixtures/isos/list_public.json +17 -0
- data/test/fixtures/isos/retrieve.json +11 -0
- data/test/fixtures/kubernetes/config.json +3 -0
- data/test/fixtures/kubernetes/create.json +39 -0
- data/test/fixtures/kubernetes/create_node_pool.json +25 -0
- data/test/fixtures/kubernetes/list.json +85 -0
- data/test/fixtures/kubernetes/list_node_pools.json +56 -0
- data/test/fixtures/kubernetes/list_resources.json +26 -0
- data/test/fixtures/kubernetes/retrieve.json +39 -0
- data/test/fixtures/kubernetes/retrieve_node_pool.json +25 -0
- data/test/fixtures/kubernetes/update_node_pool.json +19 -0
- data/test/fixtures/load_balancers/create.json +48 -0
- data/test/fixtures/load_balancers/create_forwarding_rule.json +1 -0
- data/test/fixtures/load_balancers/delete.json +1 -0
- data/test/fixtures/load_balancers/delete_forwarding_rule.json +1 -0
- data/test/fixtures/load_balancers/list.json +57 -0
- data/test/fixtures/load_balancers/list_firewall_rules.json +17 -0
- data/test/fixtures/load_balancers/list_forwarding_rules.json +18 -0
- data/test/fixtures/load_balancers/retrieve.json +48 -0
- data/test/fixtures/load_balancers/retrieve_firewall_rule.json +8 -0
- data/test/fixtures/load_balancers/retrieve_forwarding_rule.json +9 -0
- data/test/fixtures/load_balancers/update.json +1 -0
- data/test/fixtures/object_storage/create.json +14 -0
- data/test/fixtures/object_storage/delete.json +1 -0
- data/test/fixtures/object_storage/list.json +22 -0
- data/test/fixtures/object_storage/list_clusters.json +17 -0
- data/test/fixtures/object_storage/regenerate_keys.json +7 -0
- data/test/fixtures/object_storage/retrieve.json +13 -0
- data/test/fixtures/object_storage/update.json +1 -0
- data/test/fixtures/operating_systems/list.json +17 -0
- data/test/fixtures/plans/list.json +22 -0
- data/test/fixtures/plans/list_metal.json +24 -0
- data/test/fixtures/private_networks/create.json +10 -0
- data/test/fixtures/private_networks/delete.json +1 -0
- data/test/fixtures/private_networks/list.json +19 -0
- data/test/fixtures/private_networks/retrieve.json +10 -0
- data/test/fixtures/private_networks/update.json +1 -0
- data/test/fixtures/regions/list.json +20 -0
- data/test/fixtures/regions/list_availability.json +24 -0
- data/test/fixtures/reserved_ips/attach.json +1 -0
- data/test/fixtures/reserved_ips/convert.json +11 -0
- data/test/fixtures/reserved_ips/create.json +11 -0
- data/test/fixtures/reserved_ips/delete.json +1 -0
- data/test/fixtures/reserved_ips/detach.json +1 -0
- data/test/fixtures/reserved_ips/list.json +29 -0
- data/test/fixtures/reserved_ips/retrieve.json +11 -0
- data/test/fixtures/snapshots/create.json +11 -0
- data/test/fixtures/snapshots/create_from_url.json +11 -0
- data/test/fixtures/snapshots/delete.json +1 -0
- data/test/fixtures/snapshots/list.json +20 -0
- data/test/fixtures/snapshots/retrieve.json +11 -0
- data/test/fixtures/snapshots/update.json +1 -0
- data/test/fixtures/ssh_keys/create.json +8 -0
- data/test/fixtures/ssh_keys/delete.json +1 -0
- data/test/fixtures/ssh_keys/list.json +17 -0
- data/test/fixtures/ssh_keys/retrieve.json +8 -0
- data/test/fixtures/ssh_keys/update.json +1 -0
- data/test/fixtures/startup_scripts/create.json +10 -0
- data/test/fixtures/startup_scripts/delete.json +1 -0
- data/test/fixtures/startup_scripts/list.json +18 -0
- data/test/fixtures/startup_scripts/retrieve.json +10 -0
- data/test/fixtures/startup_scripts/update.json +1 -0
- data/test/fixtures/users/create.json +9 -0
- data/test/fixtures/users/delete.json +1 -0
- data/test/fixtures/users/list.json +29 -0
- data/test/fixtures/users/retrieve.json +20 -0
- data/test/fixtures/users/update.json +1 -0
- data/test/test_helper.rb +18 -5
- data/test/vultr/client_test.rb +8 -0
- data/test/vultr/object_test.rb +21 -0
- data/test/vultr/resources/account_test.rb +12 -0
- data/test/vultr/resources/applications_test.rb +15 -0
- data/test/vultr/resources/backups_test.rb +24 -0
- data/test/vultr/resources/bare_metal_test.rb +267 -0
- data/test/vultr/resources/block_storage_test.rb +85 -0
- data/test/vultr/resources/dns_test.rb +134 -0
- data/test/vultr/resources/firewall_test.rb +88 -0
- data/test/vultr/resources/instances_test.rb +325 -0
- data/test/vultr/resources/iso_test.rb +58 -0
- data/test/vultr/resources/kubernetes_test.rb +185 -0
- data/test/vultr/resources/load_balancers_test.rb +110 -0
- data/test/vultr/resources/object_storage_test.rb +71 -0
- data/test/vultr/resources/operating_systems_test.rb +15 -0
- data/test/vultr/resources/plans_test.rb +25 -0
- data/test/vultr/resources/private_networks_test.rb +50 -0
- data/test/vultr/resources/regions_test.rb +26 -0
- data/test/vultr/resources/reserved_ips_test.rb +67 -0
- data/test/vultr/resources/snapshots_test.rb +60 -0
- data/test/vultr/resources/ssh_keys_test.rb +50 -0
- data/test/vultr/resources/startup_scripts_test.rb +50 -0
- data/test/vultr/resources/users_test.rb +50 -0
- data/vultr.gemspec +17 -17
- metadata +394 -48
- data/test/vultr/vultr_account_test.rb +0 -29
- data/test/vultr/vultr_app_test.rb +0 -26
- data/test/vultr/vultr_backup_test.rb +0 -22
- data/test/vultr/vultr_iso_test.rb +0 -27
- data/test/vultr/vultr_os_test.rb +0 -21
- data/test/vultr/vultr_plan_test.rb +0 -22
- data/test/vultr/vultr_region_test.rb +0 -33
- data/test/vultr/vultr_snapshot_test.rb +0 -30
- data/test/vultr/vultr_sshkey_test.rb +0 -50
- data/test/vultr/vultr_startupscript_test.rb +0 -53
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -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 @@
|
|
1
|
+
{}
|
@@ -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 @@
|
|
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 @@
|
|
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 @@
|
|
1
|
+
{}
|
@@ -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 @@
|
|
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 @@
|
|
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
|
-
|
2
|
-
|
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
|
-
|
5
|
-
|
6
|
-
|
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,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
|