@@ -98,6 +98,8 @@ function Test-AzureFirewallCRUD
98
98
# Create the Virtual Network
99
99
$subnet = New-AzVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix 10.0 .0.0 / 24
100
100
$vnet = New-AzvirtualNetwork - Name $vnetName - ResourceGroupName $rgname - Location $location - AddressPrefix 10.0 .0.0 / 16 - Subnet $subnet
101
+ # Get full subnet details
102
+ $subnet = Get-AzVirtualNetworkSubnetConfig - VirtualNetwork $vnet - Name $subnetName
101
103
102
104
# Create public ip
103
105
$publicip = New-AzPublicIpAddress - ResourceGroupName $rgname - name $publicIpName - location $location - AllocationMethod Static - Sku Standard
@@ -119,6 +121,8 @@ function Test-AzureFirewallCRUD
119
121
Assert-NotNull $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
120
122
Assert-NotNull $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
121
123
Assert-NotNull $getAzureFirewall.IpConfigurations [0 ].PrivateIpAddress
124
+ Assert-AreEqual $subnet.Id $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
125
+ Assert-AreEqual $publicip.Id $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
122
126
Assert-AreEqual 0 @ ($getAzureFirewall.ApplicationRuleCollections ).Count
123
127
Assert-AreEqual 0 @ ($getAzureFirewall.NatRuleCollections ).Count
124
128
Assert-AreEqual 0 @ ($getAzureFirewall.NetworkRuleCollections ).Count
@@ -204,8 +208,8 @@ function Test-AzureFirewallCRUD
204
208
# Add NetworkRuleCollections to the Firewall using method AddNetworkRuleCollection
205
209
$azureFirewall.AddNetworkRuleCollection ($netRc )
206
210
207
- # Update ThreatIntel mode
208
- $azureFirewall.ThreatIntelMode = " Deny"
211
+ # Update ThreatIntel mode
212
+ $azureFirewall.ThreatIntelMode = " Deny"
209
213
210
214
# Set AzureFirewall
211
215
Set-AzFirewall - AzureFirewall $azureFirewall
@@ -220,7 +224,7 @@ function Test-AzureFirewallCRUD
220
224
Assert-NotNull $getAzureFirewall.Location
221
225
Assert-AreEqual $location $getAzureFirewall.Location
222
226
Assert-NotNull $getAzureFirewall.Etag
223
- Assert-AreEqual " Deny" $getAzureFirewall.ThreatIntelMode
227
+ Assert-AreEqual " Deny" $getAzureFirewall.ThreatIntelMode
224
228
225
229
Assert-AreEqual 1 @ ($getAzureFirewall.IpConfigurations ).Count
226
230
Assert-NotNull $azureFirewallIpConfiguration [0 ].Subnet.Id
@@ -456,7 +460,7 @@ function Test-AzureFirewallCRUDWithZones
456
460
{
457
461
# Create the resource group
458
462
$resourceGroup = New-AzResourceGroup - Name $rgname - Location $location - Tags @ { testtag = " testval" }
459
-
463
+
460
464
# Create the Virtual Network
461
465
$subnet = New-AzVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix 10.0 .0.0 / 24
462
466
$vnet = New-AzvirtualNetwork - Name $vnetName - ResourceGroupName $rgname - Location $location - AddressPrefix 10.0 .0.0 / 16 - Subnet $subnet
@@ -660,7 +664,7 @@ function Test-AzureFirewallCRUDWithZones
660
664
Assert-AreEqual $appRule1ProtocolType2 $appRule.Protocols [1 ].ProtocolType
661
665
Assert-AreEqual $appRule1Port1 $appRule.Protocols [0 ].Port
662
666
Assert-AreEqual $appRule1Port2 $appRule.Protocols [1 ].Port
663
-
667
+
664
668
Assert-AreEqual 2 $appRule.TargetFqdns.Count
665
669
Assert-AreEqual $appRule1Fqdn1 $appRule.TargetFqdns [0 ]
666
670
Assert-AreEqual $appRule1Fqdn2 $appRule.TargetFqdns [1 ]
@@ -739,6 +743,163 @@ function Test-AzureFirewallCRUDWithZones
739
743
}
740
744
}
741
745
746
+ <#
747
+ . SYNOPSIS
748
+ Tests AzureFirewall with new style params for VNET and Public IPs - objects instead of strings
749
+ #>
750
+ function Test-AzureFirewallPIPAndVNETObjectTypeParams
751
+ {
752
+ # Setup
753
+ $rgname = Get-ResourceGroupName
754
+ $azureFirewallName = Get-ResourceName
755
+ $resourceTypeParent = " Microsoft.Network/AzureFirewalls"
756
+ $location = Get-ProviderLocation $resourceTypeParent " eastus2euap"
757
+
758
+ $vnetName = Get-ResourceName
759
+ $subnetName = " AzureFirewallSubnet"
760
+ $publicIp1Name = Get-ResourceName
761
+ $publicIp2Name = Get-ResourceName
762
+
763
+ try
764
+ {
765
+ # Create the resource group
766
+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $location - Tags @ { testtag = " testval" }
767
+
768
+ # Create the Virtual Network
769
+ $subnet = New-AzVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix 10.0 .0.0 / 24
770
+ $vnet = New-AzvirtualNetwork - Name $vnetName - ResourceGroupName $rgname - Location $location - AddressPrefix 10.0 .0.0 / 16 - Subnet $subnet
771
+ # Get full subnet details
772
+ $subnet = Get-AzVirtualNetworkSubnetConfig - VirtualNetwork $vnet - Name $subnetName
773
+
774
+ # Create public ips
775
+ $publicip1 = New-AzPublicIpAddress - ResourceGroupName $rgname - name $publicIp1Name - location $location - AllocationMethod Static - Sku Standard
776
+ $publicip2 = New-AzPublicIpAddress - ResourceGroupName $rgname - name $publicIp2Name - location $location - AllocationMethod Static - Sku Standard
777
+
778
+ # Create AzureFirewall with a single public IP address
779
+ $azureFirewall = New-AzFirewall –Name $azureFirewallName - ResourceGroupName $rgname - Location $location - VirtualNetwork $vnet - PublicIpAddress $publicip1
780
+
781
+ # Get AzureFirewall
782
+ $getAzureFirewall = Get-AzFirewall - name $azureFirewallName - ResourceGroupName $rgname
783
+
784
+ # verification
785
+ Assert-AreEqual $rgName $getAzureFirewall.ResourceGroupName
786
+ Assert-AreEqual $azureFirewallName $getAzureFirewall.Name
787
+ Assert-NotNull $getAzureFirewall.Location
788
+ Assert-AreEqual (Normalize- Location $location ) $getAzureFirewall.Location
789
+ Assert-NotNull $getAzureFirewall.Etag
790
+ Assert-AreEqual 1 @ ($getAzureFirewall.IpConfigurations ).Count
791
+ Assert-NotNull $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
792
+ Assert-NotNull $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
793
+ Assert-NotNull $getAzureFirewall.IpConfigurations [0 ].PrivateIpAddress
794
+ Assert-AreEqual $subnet.Id $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
795
+ Assert-AreEqual $publicip1.Id $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
796
+
797
+ # Test handling of incorrect values when adding public IP address
798
+ Assert-ThrowsContains { $getAzureFirewall.AddPublicIpAddress () } " Cannot find an overload"
799
+ Assert-ThrowsContains { $getAzureFirewall.AddPublicIpAddress ($null ) } " Public IP Address cannot be null"
800
+ Assert-ThrowsContains { $getAzureFirewall.AddPublicIpAddress (" ABCD" ) } " Cannot convert argument"
801
+ Assert-ThrowsContains { $getAzureFirewall.AddPublicIpAddress ($publicip1 ) } " already attached to firewall"
802
+
803
+ # Test handling of incorrect values when removing public IP Address
804
+ Assert-ThrowsContains { $getAzureFirewall.RemovePublicIpAddress () } " Cannot find an overload"
805
+ Assert-ThrowsContains { $getAzureFirewall.RemovePublicIpAddress ($null ) } " Public IP Address cannot be null"
806
+ Assert-ThrowsContains { $getAzureFirewall.RemovePublicIpAddress (" ABCD" ) } " Cannot convert argument"
807
+ Assert-ThrowsContains { $getAzureFirewall.RemovePublicIpAddress ($publicip2 ) } " not attached to firewall"
808
+
809
+ # Add second public IP Address
810
+ $getAzureFirewall.AddPublicIpAddress ($publicip2 )
811
+
812
+ # Set AzureFirewall
813
+ Set-AzFirewall - AzureFirewall $getAzureFirewall
814
+
815
+ # Get AzureFirewall
816
+ $getAzureFirewall = Get-AzFirewall - name $azureFirewallName - ResourceGroupName $rgName
817
+ $azureFirewallIpConfiguration = $getAzureFirewall.IpConfigurations
818
+
819
+ # verification
820
+ Assert-AreEqual $rgName $getAzureFirewall.ResourceGroupName
821
+ Assert-AreEqual $azureFirewallName $getAzureFirewall.Name
822
+ Assert-NotNull $getAzureFirewall.Location
823
+ Assert-AreEqual $location $getAzureFirewall.Location
824
+ Assert-NotNull $getAzureFirewall.Etag
825
+
826
+ Assert-AreEqual 2 @ ($getAzureFirewall.IpConfigurations ).Count
827
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].Subnet.Id
828
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].PublicIpAddress.Id
829
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].PrivateIpAddress
830
+ Assert-AreEqual $subnet.Id $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
831
+ Assert-AreEqual $publicip1.Id $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
832
+ Assert-AreEqual $publicip2.Id $getAzureFirewall.IpConfigurations [1 ].PublicIpAddress.Id
833
+
834
+ # Remove second public IP address
835
+ $getAzureFirewall.RemovePublicIpAddress ($publicip2 )
836
+
837
+ # Set AzureFirewall
838
+ Set-AzFirewall - AzureFirewall $getAzureFirewall
839
+
840
+ # Get AzureFirewall
841
+ $getAzureFirewall = Get-AzFirewall - name $azureFirewallName - ResourceGroupName $rgName
842
+ $azureFirewallIpConfiguration = $getAzureFirewall.IpConfigurations
843
+
844
+ # verification
845
+ Assert-AreEqual $rgName $getAzureFirewall.ResourceGroupName
846
+ Assert-AreEqual $azureFirewallName $getAzureFirewall.Name
847
+ Assert-NotNull $getAzureFirewall.Location
848
+ Assert-AreEqual $location $getAzureFirewall.Location
849
+ Assert-NotNull $getAzureFirewall.Etag
850
+
851
+ Assert-AreEqual 1 @ ($getAzureFirewall.IpConfigurations ).Count
852
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].Subnet.Id
853
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].PublicIpAddress.Id
854
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].PrivateIpAddress
855
+ Assert-AreEqual $subnet.Id $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
856
+ Assert-AreEqual $publicip1.Id $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
857
+
858
+ # Delete AzureFirewall
859
+ $delete = Remove-AzFirewall - ResourceGroupName $rgname - name $azureFirewallName - PassThru - Force
860
+ Assert-AreEqual true $delete
861
+
862
+ # Create AzureFirewall with Two Public IP addresses
863
+ $azureFirewall = New-AzFirewall –Name $azureFirewallName - ResourceGroupName $rgname - Location $location - VirtualNetwork $vnet - PublicIpAddress @ ($publicip1 , $publicip2 )
864
+
865
+ # Get AzureFirewall
866
+ $getAzureFirewall = Get-AzFirewall - name $azureFirewallName - ResourceGroupName $rgname
867
+ $azureFirewallIpConfiguration = $getAzureFirewall.IpConfigurations
868
+
869
+ # verification
870
+ Assert-AreEqual $rgName $getAzureFirewall.ResourceGroupName
871
+ Assert-AreEqual $azureFirewallName $getAzureFirewall.Name
872
+ Assert-NotNull $getAzureFirewall.Location
873
+ Assert-AreEqual $location $getAzureFirewall.Location
874
+ Assert-NotNull $getAzureFirewall.Etag
875
+
876
+ Assert-AreEqual 2 @ ($getAzureFirewall.IpConfigurations ).Count
877
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].Subnet.Id
878
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].PublicIpAddress.Id
879
+ Assert-NotNull $azureFirewallIpConfiguration [1 ].PublicIpAddress.Id
880
+ Assert-NotNull $azureFirewallIpConfiguration [0 ].PrivateIpAddress
881
+ Assert-AreEqual $subnet.Id $getAzureFirewall.IpConfigurations [0 ].Subnet.Id
882
+ Assert-AreEqual $publicip1.Id $getAzureFirewall.IpConfigurations [0 ].PublicIpAddress.Id
883
+ Assert-AreEqual $publicip2.Id $getAzureFirewall.IpConfigurations [1 ].PublicIpAddress.Id
884
+
885
+ # Delete AzureFirewall
886
+ $delete = Remove-AzFirewall - ResourceGroupName $rgname - name $azureFirewallName - PassThru - Force
887
+ Assert-AreEqual true $delete
888
+
889
+ # Delete VirtualNetwork
890
+ $delete = Remove-AzVirtualNetwork - ResourceGroupName $rgname - name $vnetName - PassThru - Force
891
+ Assert-AreEqual true $delete
892
+
893
+ $list = Get-AzFirewall - ResourceGroupName $rgname
894
+ Assert-AreEqual 0 @ ($list ).Count
895
+ }
896
+ finally
897
+ {
898
+ # Cleanup
899
+ Clean - ResourceGroup $rgname
900
+ }
901
+ }
902
+
742
903
<#
743
904
. SYNOPSIS
744
905
Tests AzureFirewall Set and Remove IpConfiguration
0 commit comments