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

43 lines
3 KiB
Text

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