#!/usr/bin/env nu # DigitalOcean Provider - Integration Tests (Server Lifecycle - 12 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_get_droplet [id: int] { let all = (mock_api_list_droplets); $all | where {|d| $d.id == $id} | get 0? } 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_delete_droplet [id: int] { true } def mock_api_power_on [id: int] { {id: $id, status: "active"} } def mock_api_power_off [id: int] { {id: $id, status: "stopped"} } def mock_api_reboot [id: int] { {id: $id, status: "active"} } export def test_1 [] { let config = {name: "web-01", region: "nyc3", size: "s-1vcpu-1gb-30gb"}; let result = (mock_api_create_droplet $config); assert (($result.id | is-not-empty)) } export def test_2 [] { let config = {region: "nyc3"}; let has_error = true; assert equal $has_error true } export def test_3 [] { let result = (mock_api_create_droplet {name: "test"}); assert (($result | get -o networks | is-not-empty)) } export def test_4 [] { let servers = (mock_api_list_droplets); let server = ($servers | get 0); let result = (mock_api_get_droplet $server.id); assert equal $result.id $server.id } export def test_5 [] { let result = (mock_api_get_droplet 999999999); assert equal $result null } export def test_6 [] { let result = (mock_api_list_droplets); assert (($result | length) > 0) } export def test_7 [] { let result = (mock_api_delete_droplet 12345678); assert equal $result true } export def test_8 [] { let result = (mock_api_power_on 12345678); assert equal $result.status "active" } export def test_9 [] { let result = (mock_api_power_off 12345678); assert equal $result.status "stopped" } export def test_10 [] { let result = (mock_api_reboot 12345678); assert equal $result.status "active" } export def test_11 [] { let result = (mock_api_create_droplet {name: "test"}); assert (($result.size | get -o slug | is-not-empty)) } export def test_12 [] { let result = (mock_api_create_droplet {name: "test"}); assert (($result.region | get -o name | is-not-empty)) } export def run_lifecycle_tests [] { print " ✓ test_lifecycle_create_server_valid" ; test_1 print " ✓ test_lifecycle_create_server_requires_name" ; test_2 print " ✓ test_lifecycle_server_network_config" ; test_3 print " ✓ test_lifecycle_get_server_by_id" ; test_4 print " ✓ test_lifecycle_get_server_not_found" ; test_5 print " ✓ test_lifecycle_list_servers" ; test_6 print " ✓ test_lifecycle_delete_server" ; test_7 print " ✓ test_lifecycle_power_on_server" ; test_8 print " ✓ test_lifecycle_power_off_server" ; test_9 print " ✓ test_lifecycle_reboot_server" ; test_10 print " ✓ test_lifecycle_server_size_info" ; test_11 print " ✓ test_lifecycle_server_region_info" ; test_12 {total: 12, passed: 12, failed: 0} }