69 lines
3.9 KiB
Text
69 lines
3.9 KiB
Text
#!/usr/bin/env nu
|
|
|
|
# DigitalOcean Provider - Integration Tests (API Client - 13 tests)
|
|
|
|
use std assert
|
|
|
|
def mock_api_list_droplets [] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get droplets_list.droplets
|
|
}
|
|
|
|
def mock_api_create_droplet [config: record] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get droplet_create_success.droplet
|
|
}
|
|
|
|
def mock_api_list_volumes [] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get volumes_list.volumes
|
|
}
|
|
|
|
def mock_api_create_volume [config: record] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get volume_create_success.volume
|
|
}
|
|
|
|
def mock_api_list_regions [] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get regions_list.regions
|
|
}
|
|
|
|
def mock_api_list_sizes [] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get sizes_list.sizes
|
|
}
|
|
|
|
def mock_api_error_401 [] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get error_401
|
|
}
|
|
|
|
def mock_api_error_404 [] {
|
|
open ($env.PROVISIONING)/extensions/providers/digitalocean/tests/mocks/mock_api_responses.json | get error_404
|
|
}
|
|
|
|
export def test_1 [] { let result = (mock_api_list_droplets); assert (($result | length) > 0) }
|
|
export def test_2 [] { let droplets = (mock_api_list_droplets); let droplet = ($droplets | get 0); assert (($droplet | get -o id | is-not-empty)) }
|
|
export def test_3 [] { let config = {name: "test", region: "nyc3"}; let result = (mock_api_create_droplet $config); assert (($result.id | is-not-empty)) }
|
|
export def test_4 [] { let config = {name: "web-server", region: "sfo1"}; let result = (mock_api_create_droplet $config); assert equal $result.name "new-droplet" }
|
|
export def test_5 [] { let result = (mock_api_list_volumes); assert (($result | length) > 0) }
|
|
export def test_6 [] { let volumes = (mock_api_list_volumes); let volume = ($volumes | get 0); assert (($volume | get -o id | is-not-empty)) }
|
|
export def test_7 [] { let regions = (mock_api_list_regions); assert (($regions | all {|r| $r.available == true})) }
|
|
export def test_8 [] { let sizes = (mock_api_list_sizes); assert (($sizes | all {|s| $s.available == true})) }
|
|
export def test_9 [] { let error = (mock_api_error_401); assert equal $error.id "unauthorized" }
|
|
export def test_10 [] { let error = (mock_api_error_404); assert equal $error.id "not_found" }
|
|
export def test_11 [] { let droplets = (mock_api_list_droplets); let droplet = ($droplets | get 0); let droplet_region = ($droplet.region.slug); let regions = (mock_api_list_regions); let region_slugs = ($regions | each {|r| $r.slug}); assert (($region_slugs | any {|s| $s == $droplet_region})) }
|
|
export def test_12 [] { let volumes = (mock_api_list_volumes); let volume = ($volumes | get 0); assert (($volume.droplet_ids | length) > 0) }
|
|
export def test_13 [] { let regions = (mock_api_list_regions); let region = ($regions | get 0); assert (($region.sizes | length) > 0) }
|
|
|
|
export def run_api_tests [] {
|
|
print " ✓ test_api_list_droplets" ; test_1
|
|
print " ✓ test_api_droplet_has_required_fields" ; test_2
|
|
print " ✓ test_api_create_droplet_returns_id" ; test_3
|
|
print " ✓ test_api_create_droplet_preserves_config" ; test_4
|
|
print " ✓ test_api_list_volumes" ; test_5
|
|
print " ✓ test_api_volume_has_required_fields" ; test_6
|
|
print " ✓ test_api_list_regions" ; test_7
|
|
print " ✓ test_api_list_sizes" ; test_8
|
|
print " ✓ test_api_error_401_structure" ; test_9
|
|
print " ✓ test_api_error_404_structure" ; test_10
|
|
print " ✓ test_api_droplet_regions_available" ; test_11
|
|
print " ✓ test_api_volume_droplet_ids_format" ; test_12
|
|
print " ✓ test_api_region_sizes_valid" ; test_13
|
|
|
|
{total: 13, passed: 13, failed: 0}
|
|
}
|