Toolkit/Tests/e2e/Nas.Tests.ps1

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

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

    # --- NAS Systems ---

    Context 'List NAS Systems' {
        It 'lists NAS systems' {
            $data.nasSystems = Get-RscNasSystem
            if (@($data.nasSystems).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "List NAS Systems" "skip" "None found"
                Set-ItResult -Skipped -Because "No NAS systems found"
                return
            }
            Add-E2eDiagnosticEntry $diag "List NAS Systems" "pass" "Found $(@($data.nasSystems).Count)"
        }
    }

    Context 'NAS System by Id' {
        It 'retrieves NAS system by Id' {
            if (-not $data.nasSystems -or @($data.nasSystems).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Retrieve NAS System by Id" "skip" "No systems"
                Set-ItResult -Skipped -Because "No systems"
                return
            }
            $sys = Get-RscNasSystem -Id $data.nasSystems[0].id
            $sys.id | Should -Be $data.nasSystems[0].id
            $sys.name | Should -Be $data.nasSystems[0].name
            Add-E2eDiagnosticEntry $diag "Retrieve NAS System by Id" "pass" "'$($sys.name)'"
        }
    }

    Context 'NAS System by Name' {
        It 'retrieves NAS system by Name' {
            if (-not $data.nasSystems -or @($data.nasSystems).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Retrieve NAS System by Name" "skip" "No systems"
                Set-ItResult -Skipped -Because "No systems"
                return
            }
            $results = @(Get-RscNasSystem -Name $data.nasSystems[0].name)
            $results.Count | Should -BeGreaterThan 0
            $match = $results | Where-Object { $_.id -eq $data.nasSystems[0].id }
            $match | Should -Not -BeNullOrEmpty
            Add-E2eDiagnosticEntry $diag "Retrieve NAS System by Name" "pass" "'$($data.nasSystems[0].name)'"
        }
    }

    # --- NAS Shares ---

    Context 'List NAS Shares' {
        It 'lists NAS shares' {
            $data.nasShares = Get-RscNasShare
            if (@($data.nasShares).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "List NAS Shares" "skip" "None found"
                Set-ItResult -Skipped -Because "No NAS shares found"
                return
            }
            Add-E2eDiagnosticEntry $diag "List NAS Shares" "pass" "Found $(@($data.nasShares).Count)"
        }
    }

    Context 'NAS Share by Id' {
        It 'retrieves NAS share by Id' {
            if (-not $data.nasShares -or @($data.nasShares).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Retrieve NAS Share by Id" "skip" "No shares"
                Set-ItResult -Skipped -Because "No shares"
                return
            }
            $share = Get-RscNasShare -Id $data.nasShares[0].id
            $share.id | Should -Be $data.nasShares[0].id
            $share.name | Should -Be $data.nasShares[0].name
            Add-E2eDiagnosticEntry $diag "Retrieve NAS Share by Id" "pass" "'$($share.name)'"
        }
    }

    Context 'NAS Share by Name' {
        It 'retrieves NAS share by Name' {
            if (-not $data.nasShares -or @($data.nasShares).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Retrieve NAS Share by Name" "skip" "No shares"
                Set-ItResult -Skipped -Because "No shares"
                return
            }
            $results = @(Get-RscNasShare -Name $data.nasShares[0].name)
            $results.Count | Should -BeGreaterThan 0
            $match = $results | Where-Object { $_.id -eq $data.nasShares[0].id }
            $match | Should -Not -BeNullOrEmpty
            Add-E2eDiagnosticEntry $diag "Retrieve NAS Share by Name" "pass" "'$($data.nasShares[0].name)'"
        }
    }

    Context 'NAS Shares by NAS System' {
        It 'retrieves shares associated with a NAS system' {
            if (-not $data.nasSystems -or @($data.nasSystems).Count -le 0) {
                Add-E2eDiagnosticEntry $diag "Shares by NAS System" "skip" "No systems"
                Set-ItResult -Skipped -Because "No systems"
                return
            }
            $nasSystem = Get-RscNasSystem -Id $data.nasSystems[0].id
            $query = $nasSystem | Get-RscNasShare -AsQuery
            $query.Field.DescendantConnection.Nodes[0].NasSystem = New-Object -TypeName RubrikSecurityCloud.Types.NasSystem
            $query.Field.DescendantConnection.Nodes[0].NasSystem.Id = "Fetch"
            $result = $query.Invoke()
            $shares = $result.DescendantConnection.Nodes
            foreach ($share in $shares) {
                if ($null -eq $share.Id) { continue }
                $share.NasSystem.Id | Should -Be $data.nasSystems[0].id
            }
            Add-E2eDiagnosticEntry $diag "Shares by NAS System" "pass" "System '$($nasSystem.name)'"
        }
    }
}

AfterAll {
    Save-E2eDiagnostics $diag
}