#!/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} }