Toolkit/Tests/e2e/Cluster.Tests.ps1

BeforeAll {
    . "$PSScriptRoot\..\E2eTestInit.ps1"
    $Global:diag = New-E2eDiagnostics -Api "Cluster"
    $Global:data = @{ clusters = $null }
}

Describe -Name 'Cluster' -Tag 'E2E' -Fixture {

    Context 'List Clusters' {
        It 'lists all clusters' {
            $data.clusters = Get-RscCluster
            if (@($data.clusters).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "List Clusters" "skip" "None found"
                Set-ItResult -Skipped -Because "No clusters found"
                return
            }
            Add-E2eDiagnosticEntry $diag "List Clusters" "pass" "Found $(@($data.clusters).Count)"
        }
    }

    Context 'Retrieve by Name' {
        It 'retrieves cluster by Name' {
            if (-not $data.clusters -or @($data.clusters).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Retrieve Cluster by Name" "skip" "No clusters"
                Set-ItResult -Skipped -Because "No clusters"
                return
            }
            $result = Get-RscCluster -Name $data.clusters[0].name
            $result | Should -Not -BeNullOrEmpty
            Add-E2eDiagnosticEntry $diag "Retrieve Cluster by Name" "pass" "'$($data.clusters[0].name)'"
        }
    }

    Context 'Detail Profile' {
        It 'retrieves cluster with Detail profile' {
            if (-not $data.clusters -or @($data.clusters).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Detail Profile" "skip" "No clusters"
                Set-ItResult -Skipped -Because "No clusters"
                return
            }
            try {
                $detail = Get-RscCluster -Name $data.clusters[0].name -Detail
                $detail | Should -Not -BeNullOrEmpty
                Add-E2eDiagnosticEntry $diag "Detail Profile" "pass" "'$($data.clusters[0].name)'"
            } catch {
                # DETAIL profile may include fields with required args
                # that the SDK sends as null (e.g. metricTimeSeriesNew).
                # Report as a diagnostic failure, don't fail the test suite.
                Add-E2eDiagnosticEntry $diag "Detail Profile" "skip" "Detail profile query failed (known limitation): $_"
                Set-ItResult -Skipped -Because "Detail profile query failed: $_"
            }
        }
    }
}

AfterAll {
    Save-E2eDiagnostics $diag
}