diff --git a/PowerFGT/Public/cmdb/firewall/addressgroup.ps1 b/PowerFGT/Public/cmdb/firewall/addressgroup.ps1 index ad0aab43..f35bce56 100644 --- a/PowerFGT/Public/cmdb/firewall/addressgroup.ps1 +++ b/PowerFGT/Public/cmdb/firewall/addressgroup.ps1 @@ -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)] @@ -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 @@ -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) } diff --git a/Tests/integration/FirewallAddressGroup.Tests.ps1 b/Tests/integration/FirewallAddressGroup.Tests.ps1 index 3b7b785e..1eabcd1f 100644 --- a/Tests/integration/FirewallAddressGroup.Tests.ps1 +++ b/Tests/integration/FirewallAddressGroup.Tests.ps1 @@ -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 @@ -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 {