provisioning-catalog/providers/digitalocean/tests/integration/test_api_client.nu

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}
}