Tests/AVIREST.PostPutDelete.Tests.ps1

using Module ..\AVIRest.psd1

BeforeAll {
    BeforeAll {
        $secret = 'simulatedproductionadmin' # Requires MS Secret Management module

        $errorActionPreference = 'Stop'
        Try {
            $credential = get-secret $secret
            $secretInfo = get-secretinfo $secret
            Connect-AVIRest -Server $secretInfo.Metadata.Server -Credential $credential
        }
        Catch {
            Throw 'Could not setup E2E test environment'
        }
    }
}

Describe 'AVI REST API' {
    Context "Clone Object Test" {
        It "Clone/POST an object" {
            $internalGroup = Get-AVIRestIpaddrgroup -Name Internal
            $clonedIPGroup = Copy-AVIRestObject $internalGroup
            $script:clonedIPGroup = New-AVIRestIpaddrgroup -Ipaddrgroup $clonedIPGroup -Confirm:$false
            {$clonedIPGroup} | Should -Not -Throw
            $clonedIPGroup | Should -Not -BeNullOrEmpty
            $clonedIPGroup.Name | Should -Match 'Cloned'
        }
        It "Set/PUT an object" {
            $newName = 'NewName'
            $script:clonedIPGroup.Name = $newName
            $script:editedIPGroup = Set-AVIRestIpaddrgroup -Ipaddrgroup $clonedIPGroup -Confirm:$false
            {$editedIPGroup} | Should -Not -Throw
            $editedIPGroup.Name | Should -Be $newName
        }
        It "Remove/DELETE an object" {
            if ($editedIPGroup.count -ne 1) {Throw 'Please check IP Group'}
            $removedIPGroup = Remove-AVIRestIpaddrgroup -Ipaddrgroup $editedIPGroup -Confirm:$false
            {$removedIPGroup} | Should -Not -Throw
            $removedIPGroup | Should -BeNullOrEmpty
        }
    }
}