Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 12 additions & 15 deletions PowerFGT/Public/cmdb/firewall/addressgroup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function Add-FGTFirewallAddressGroup {
Param(
[Parameter (Mandatory = $true)]
[string]$name,
[Parameter (Mandatory = $true)]
[Parameter (Mandatory = $false)]
[string[]]$member,
[Parameter (Mandatory = $false)]
[ValidateLength(0, 255)]
Expand Down Expand Up @@ -73,14 +73,16 @@ function Add-FGTFirewallAddressGroup {

$addrgrp | add-member -name "name" -membertype NoteProperty -Value $name

#Add member to Member Array
$members = @( )
foreach ( $m in $member ) {
$member_name = @{ }
$member_name.add( 'name', $m)
$members += $member_name
if ( $PsBoundParameters.ContainsKey('member') ) {
#Add member to Member Array
$members = @( )
foreach ( $m in $member ) {
$member_name = @{ }
$member_name.add( 'name', $m)
$members += $member_name
}
$addrgrp | add-member -name "member" -membertype NoteProperty -Value $members
}
$addrgrp | add-member -name "member" -membertype NoteProperty -Value $members

if ( $PsBoundParameters.ContainsKey('comment') ) {
$addrgrp | add-member -name "comment" -membertype NoteProperty -Value $comment
Expand Down Expand Up @@ -606,13 +608,8 @@ function Remove-FGTFirewallAddressGroupMember {
$members = $members | Where-Object { $_.name -ne $remove_member }
}

#check if there is always a member... (it is not possible don't have member on Address Group)
if ( $members.count -eq 0 ) {
Throw "You can't remove all members. Use Remove-FGTFirewallAddressGroup to remove Address Group"
}

#if there is only One member force to be an array
if ( $members.count -eq 1 ) {
#if there is only One (or 0) member force to be an array
if ( $members.count -le 1 ) {
$members = @($members)
}

Expand Down
26 changes: 22 additions & 4 deletions Tests/integration/FirewallAddressGroup.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,18 @@ Describe "Add Firewall Address Group" {
Get-FGTFirewallAddressGroup -name $pester_addressgroup1 | Remove-FGTFirewallAddressGroup -confirm:$false
}

It "Add Address Group $pester_addressgroup1 (with 0 member)" -skip:($fgt_version -lt "7.2.0") {
Add-FGTFirewallAddressGroup -Name $pester_addressgroup1
$addressgroup = Get-FGTFirewallAddressGroup -name $pester_addressgroup1
$addressgroup.name | Should -Be $pester_addressgroup1
$addressgroup.uuid | Should -Not -BeNullOrEmpty
($addressgroup.member).count | Should -Be "0"
$addressgroup.comment | Should -BeNullOrEmpty
if ($DefaultFGTConnection.version -lt "6.4.0") {
$addressgroup.visibility | Should -Be $true
}
}

It "Add Address Group $pester_addressgroup1 (with 1 member)" {
Add-FGTFirewallAddressGroup -Name $pester_addressgroup1 -member $pester_address1
$addressgroup = Get-FGTFirewallAddressGroup -name $pester_addressgroup1
Expand Down Expand Up @@ -487,10 +499,16 @@ Describe "Remove Firewall Address Group Member" {
}
}

It "Try Remove 3 members to Address Group $pester_addressgroup1 (with 3 members before)" {
{
Get-FGTFirewallAddressGroup -Name $pester_addressgroup1 | Remove-FGTFirewallAddressGroupMember -member $pester_address1, $pester_address2, $pester_address3
} | Should -Throw "You can't remove all members. Use Remove-FGTFirewallAddressGroup to remove Address Group"
It "Remove 3 members to Address Group $pester_addressgroup1 (with 3 members before)" -skip:($fgt_version -lt "7.2.0") {
Get-FGTFirewallAddressGroup -Name $pester_addressgroup1 | Remove-FGTFirewallAddressGroupMember -member $pester_address1, $pester_address2, $pester_address3
$addressgroup = Get-FGTFirewallAddressGroup -name $pester_addressgroup1
$addressgroup.name | Should -Be $pester_addressgroup1
$addressgroup.uuid | Should -Not -BeNullOrEmpty
($addressgroup.member).count | Should -Be "0"
$addressgroup.comment | Should -BeNullOrEmpty
if ($DefaultFGTConnection.version -lt "6.4.0") {
$addressgroup.visibility | Should -Be $true
}
}

AfterAll {
Expand Down
Loading