158 lines
3.6 KiB
Text
158 lines
3.6 KiB
Text
|
|
#!/usr/bin/env nu
|
||
|
|
|
||
|
|
# Demo provider unit tests
|
||
|
|
|
||
|
|
def test-result [name: string, result: bool] {
|
||
|
|
if $result {
|
||
|
|
print $"✓ ($name)"
|
||
|
|
} else {
|
||
|
|
print $"✗ ($name)"
|
||
|
|
}
|
||
|
|
$result
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-instance-id-format [] {
|
||
|
|
let valid = "srv-001"
|
||
|
|
let invalid = "invalid"
|
||
|
|
|
||
|
|
let t1 = (test-result "Instance ID valid" ($valid | str contains "srv-"))
|
||
|
|
let t2 = (test-result "Instance ID invalid" (($invalid | str contains "srv-") == false))
|
||
|
|
|
||
|
|
$t1 and $t2
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-volume-id-format [] {
|
||
|
|
let valid = "vol-001"
|
||
|
|
let invalid = "invalid"
|
||
|
|
|
||
|
|
let t1 = (test-result "Volume ID valid" ($valid | str contains "vol-"))
|
||
|
|
let t2 = (test-result "Volume ID invalid" (($invalid | str contains "vol-") == false))
|
||
|
|
|
||
|
|
$t1 and $t2
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-network-id-format [] {
|
||
|
|
let valid = "net-001"
|
||
|
|
let invalid = "invalid"
|
||
|
|
|
||
|
|
let t1 = (test-result "Network ID valid" ($valid | str contains "net-"))
|
||
|
|
let t2 = (test-result "Network ID invalid" (($invalid | str contains "net-") == false))
|
||
|
|
|
||
|
|
$t1 and $t2
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-zone-format [] {
|
||
|
|
let zone_value = "us-west-1"
|
||
|
|
let has_dash = ($zone_value | str contains "-")
|
||
|
|
|
||
|
|
test-result "Zone format valid" $has_dash
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-instance-type-format [] {
|
||
|
|
let type_value = "small"
|
||
|
|
let is_valid = ($type_value | str length) > 0
|
||
|
|
|
||
|
|
test-result "Instance type format" $is_valid
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-volume-type-format [] {
|
||
|
|
let type_value = "standard"
|
||
|
|
let is_valid = ($type_value | str length) > 0
|
||
|
|
|
||
|
|
test-result "Volume type format" $is_valid
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-size-validation [] {
|
||
|
|
let size = 100
|
||
|
|
let is_positive = $size > 0
|
||
|
|
|
||
|
|
test-result "Size validation positive" $is_positive
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-price-validation [] {
|
||
|
|
let price = 0.10
|
||
|
|
let is_positive = $price > 0
|
||
|
|
|
||
|
|
test-result "Price validation positive" $is_positive
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-cidr-format [] {
|
||
|
|
let valid = "10.0.0.0/16"
|
||
|
|
let has_slash = ($valid | str contains "/")
|
||
|
|
|
||
|
|
test-result "CIDR format valid" $has_slash
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-ipv4-format [] {
|
||
|
|
let ip = "10.0.1.100"
|
||
|
|
let parts = ($ip | split row ".")
|
||
|
|
let has_four = ($parts | length) == 4
|
||
|
|
|
||
|
|
test-result "IPv4 four octets" $has_four
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-status-validation [] {
|
||
|
|
let status = "running"
|
||
|
|
let is_valid = ($status | str length) > 0
|
||
|
|
|
||
|
|
test-result "Status validation" $is_valid
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-memory-format [] {
|
||
|
|
let memory = "1 GB"
|
||
|
|
let has_gb = ($memory | str contains "GB")
|
||
|
|
|
||
|
|
test-result "Memory format valid" $has_gb
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-cpu-count [] {
|
||
|
|
let cpu = 2
|
||
|
|
let is_valid = $cpu > 0
|
||
|
|
|
||
|
|
test-result "CPU count valid" $is_valid
|
||
|
|
}
|
||
|
|
|
||
|
|
def test-timestamp-format [] {
|
||
|
|
let timestamp = "2025-01-07T10:00:00Z"
|
||
|
|
let has_t = ($timestamp | str contains "T")
|
||
|
|
let has_z = ($timestamp | str contains "Z")
|
||
|
|
|
||
|
|
test-result "Timestamp ISO8601 format" ($has_t and $has_z)
|
||
|
|
}
|
||
|
|
|
||
|
|
def main [] {
|
||
|
|
print "=== Unit Tests ==="
|
||
|
|
print ""
|
||
|
|
|
||
|
|
let results = [
|
||
|
|
(test-instance-id-format),
|
||
|
|
(test-volume-id-format),
|
||
|
|
(test-network-id-format),
|
||
|
|
(test-zone-format),
|
||
|
|
(test-instance-type-format),
|
||
|
|
(test-volume-type-format),
|
||
|
|
(test-size-validation),
|
||
|
|
(test-price-validation),
|
||
|
|
(test-cidr-format),
|
||
|
|
(test-ipv4-format),
|
||
|
|
(test-status-validation),
|
||
|
|
(test-memory-format),
|
||
|
|
(test-cpu-count),
|
||
|
|
(test-timestamp-format)
|
||
|
|
]
|
||
|
|
|
||
|
|
let passed = ($results | where {|it| $it == true} | length)
|
||
|
|
let failed = ($results | where {|it| $it == false} | length)
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print $"Test Results: ($passed) passed, ($failed) failed"
|
||
|
|
|
||
|
|
{
|
||
|
|
passed: $passed,
|
||
|
|
failed: $failed,
|
||
|
|
total: ($passed + $failed)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
main
|