tests/functions/AddressGroup.Tests.ps1
Describe "Tests around address group objects" { BeforeAll { . $PSScriptRoot\Connect4Testing.ps1 Lock-FMAdom -RevisionNote "Pester Tests" $pesterGUID = (New-Guid).guid -replace '.*-.*-.*-.*-' $newAddresses = @() $newAddresses += New-FMObjAddress -Name "PESTER ipmask $pesterGUID" -Type ipmask -Subnet "192.168.1.1/32" $newAddresses += New-FMObjAddress -Name "PESTER iprange $pesterGUID" -Type iprange -IpRange "192.168.1.1-192.168.1.5" $newAddresses | Add-FMAddress | Should -BeNullOrEmpty $testAddressNames = $newAddresses | Select-Object -ExpandProperty name } AfterAll { # Publish-FMAdomChange Disconnect-FM -EnableException $false } Context "Connected, locked, test addresses created" { It "Create Addressgroup without member" { $newGroup = New-FMobjAddressGroup -Name "PESTER noMember $pesterGUID" -member "none" { $newGroup | Add-FMAddressGroup } | Should -Not -Throw } It "Adding invalid data as address group does not work" { { "FooBar" | Add-FMAddressGroup } | Should -Throw "*invalid value*" } It "Invalid attributes will be ignorned" { $newGroup = New-FMobjAddressGroup -Name "PESTER noMemberBogey $pesterGUID" -member "none" $newGroup | Add-Member -MemberType NoteProperty -Name "Foo" -Value "Bar" { $newGroup | Add-FMAddressGroup } | should -Not -Throw } It "Groups can be queried" { $allAddressGroups = Get-FMAddressGroup -Filter "name -like PESTER % $pesterGUID" $allAddressGroups | Should -Not -BeNullOrEmpty $allAddressGroups | Should -HaveCount 2 } It "Query groups by -Name shortcut" { # Write-PSFMessage "################" -Level Host Get-FMAddressGroup -Name "PESTER noMemberBogey $pesterGUID" | should -Not -BeNullOrEmpty -Because "Name is just a quick filter" Get-FMAddressGroup -Name "PESTER noMemberBogey $pesterGUID" -Filter 'type -eq ipmask' | should -Not -BeNullOrEmpty -Because "Name is just a quick filter which cooperates" Get-FMAddressGroup -Name "PESTER ipmask%" | should -BeNullOrEmpty -Because "Name is just a quick filter for EQUAL, not LIKE" # Write-PSFMessage "################" -Level Host } It "Query groups -Name shortcut, positional parameter" { # Write-PSFMessage "################" -Level Host Get-FMAddressGroup "PESTER noMemberBogey $pesterGUID" | should -Not -BeNullOrEmpty -Because "Name is just a quick filter" Get-FMAddressGroup "PESTER noMemberBogey $pesterGUID" -Filter 'type -eq ipmask' | should -Not -BeNullOrEmpty -Because "Name is just a quick filter which cooperates" Get-FMAddressGroup "PESTER ipmask%" | should -BeNullOrEmpty -Because "Name is just a quick filter for EQUAL, not LIKE" # Write-PSFMessage "################" -Level Host } It "Add Group with Members" { $newGroup = New-FMobjAddressGroup -Name "PESTER Member $pesterGUID" -member $testAddressNames { $newGroup | Add-FMAddressGroup } | Should -Not -Throw } It "Remove group" { $testGroup = Get-FMAddressGroup -Connection $Connection -Filter "name -eq PESTER Member $pesterGUID" $testGroup | Should -Not -BeNullOrEmpty $testGroup | Remove-FMAddressGroup Get-FMAddressGroup -Connection $Connection -Filter "name -eq PESTER Member $pesterGUID" | Should -BeNullOrEmpty } It "Update group" { $testGroup = Get-FMAddressGroup -Connection $Connection -Filter "name -eq PESTER noMemberBogey $pesterGUID" | ConvertTo-PSFHashtable $testGroup | Should -Not -BeNullOrEmpty $testGroup.comment = "Modified at $(Get-Date)" { $testGroup | Update-fmaddressgroup } | Should -Not -Throw } It "Rename group" { { Rename-FMAddressGroup -name "PESTER noMemberBogey $pesterGUID" -newName "PESTER noMemberBuggy $pesterGUID" } | Should -Not -Throw Get-FMAddressGroup -Connection $Connection -Filter "name -eq PESTER noMemberBogey $pesterGUID" | Should -BeNullOrEmpty Get-FMAddressGroup -Connection $Connection -Filter "name -eq PESTER noMemberBuggy $pesterGUID" | Should -not -BeNullOrEmpty (Get-FMAddressGroup -Connection $Connection -Filter "name -eq PESTER noMemberBuggy $pesterGUID").comment | Should -BeLike 'Modified at*' } It "Rename Multiple Addressgroups" { { New-FMobjAddressGroup -Name "PESTER Group Tick $pesterGUID" -member "none" | Add-FMAddressGroup } | should -Not -Throw { New-FMobjAddressGroup -Name "PESTER Group Trick $pesterGUID" -member "none" | Add-FMAddressGroup } | should -Not -Throw { New-FMobjAddressGroup -Name "PESTER Group Track $pesterGUID" -member "none" | Add-FMAddressGroup } | should -Not -Throw $renameMatrix = @{ "PESTER Group Tick $pesterGUID" = "PESTER Group Huey $pesterGUID" "PESTER Group Trick $pesterGUID" = "PESTER Group Dewey $pesterGUID" "PESTER Group Track $pesterGUID" = "PESTER Group Louie $pesterGUID" } { Rename-FMAddressGroup -Mapping $renameMatrix } | Should -Not -Throw Get-FMAddressGroup -Filter "name -eq PESTER Group Huey $pesterGUID" | Should -Not -BeNullOrEmpty Get-FMAddressGroup -Filter "name -eq PESTER Group Dewey $pesterGUID" | Should -Not -BeNullOrEmpty Get-FMAddressGroup -Filter "name -eq PESTER Group Dewey $pesterGUID" | Should -Not -BeNullOrEmpty Get-FMAddressGroup -Filter "name -eq PESTER Group Tick $pesterGUID" | Should -BeNullOrEmpty Get-FMAddressGroup -Filter "name -eq PESTER Group Trick $pesterGUID" | Should -BeNullOrEmpty Get-FMAddressGroup -Filter "name -eq PESTER Group Track $pesterGUID" | Should -BeNullOrEmpty } } } |