@@ -1780,18 +1780,17 @@ function Test-AzureFirewallSnat {
1780
1780
$privateRange2 = @ (" 0.0.0.0/0" , " 66.92.0.0/16" )
1781
1781
1782
1782
try {
1783
-
1783
+
1784
1784
# Create the resource group
1785
1785
$resourceGroup = New-AzResourceGroup - Name $rgname - Location $location - Tags @ { testtag = " testval" }
1786
1786
1787
1787
$snat = New-AzFirewallPolicySnat - PrivateRange $privateRange - AutoLearnPrivateRange
1788
-
1788
+
1789
1789
# Create AzureFirewallPolicy (with SNAT)
1790
1790
$azureFirewallPolicy = New-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname - Location $location - Snat $snat
1791
-
1791
+
1792
1792
# Get AzureFirewallPolicy
1793
1793
$getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
1794
-
1795
1794
1796
1795
# verification
1797
1796
Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
@@ -1817,4 +1816,120 @@ function Test-AzureFirewallSnat {
1817
1816
# Cleanup
1818
1817
Clean - ResourceGroup $rgname
1819
1818
}
1819
+ }
1820
+
1821
+ <#
1822
+ . SYNOPSIS
1823
+ Tests Azure Firewall Policy Application Rule creation and custom http header addition
1824
+ #>
1825
+ function Test-AzureFirewallPolicyApplicationRuleCustomHttpHeader {
1826
+ # Setup
1827
+ $rgname = Get-ResourceGroupName
1828
+ $azureFirewallPolicyName = Get-ResourceName
1829
+ $azureFirewallPolicyAsJobName = Get-ResourceName
1830
+ $resourceTypeParent = " Microsoft.Network/FirewallPolicies"
1831
+ $location = " centralindia"
1832
+ $ruleGroupName = Get-ResourceName
1833
+
1834
+ # RuleCollection parameters
1835
+ $rcName = " RC"
1836
+ $rcPriority = 200
1837
+ $actionType = " Deny"
1838
+
1839
+ # Rules parameters
1840
+ $ruleName1 = " appRule1"
1841
+ $ruleName2 = " appRule2"
1842
+ $ruleName3 = " appRule3"
1843
+ $sourceAddress = " 10.0.0.0"
1844
+ $targetFqdn = " www.bing.com"
1845
+ $httpProtocol = " HTTP"
1846
+ $httpsProtocol = " HTTPS"
1847
+ $headerName1 = " header1"
1848
+ $headerValue1 = " value1"
1849
+ $headerName2 = " header2"
1850
+ $headerValue2 = " value2"
1851
+ $headerName3 = " header3"
1852
+ $headerValue3 = " value3"
1853
+
1854
+ try {
1855
+ # Create the resource group
1856
+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $location
1857
+
1858
+ # Create AzureFirewallPolicy
1859
+ $azureFirewallPolicy = New-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname - Location $location - SkuTier " Premium"
1860
+
1861
+ # Get AzureFirewallPolicy
1862
+ $getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
1863
+
1864
+ # Verification
1865
+ Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
1866
+ Assert-AreEqual $azureFirewallPolicyName $getAzureFirewallPolicy.Name
1867
+ Assert-NotNull $getAzureFirewallPolicy.Location
1868
+ Assert-AreEqual (Normalize- Location $location ) $getAzureFirewallPolicy.Location
1869
+
1870
+ # Create Application Rules with custom http headers
1871
+ $appRule1 = New-AzFirewallPolicyApplicationRule - Name $ruleName1 - Protocol $httpProtocol - SourceAddress $sourceAddress - TargetFqdn $targetFqdn
1872
+ Assert-NotNull $appRule1
1873
+ $customHeader1 = New-AzFirewallPolicyApplicationRuleCustomHttpHeader - HeaderName $headerName1 - HeaderValue $headerValue1
1874
+ Assert-NotNull $customHeader1
1875
+ $appRule1.AddCustomHttpHeaderToInsert ($customHeader1 )
1876
+
1877
+ $appRule2 = New-AzFirewallPolicyApplicationRule - Name $ruleName2 - Protocol $httpsProtocol - SourceAddress $sourceAddress - TargetFqdn $targetFqdn - TerminateTLS
1878
+ Assert-NotNull $appRule2
1879
+ $customHeader2 = New-AzFirewallPolicyApplicationRuleCustomHttpHeader - HeaderName $headerName2 - HeaderValue $headerValue2
1880
+ Assert-NotNull $customHeader2
1881
+ $appRule2.AddCustomHttpHeaderToInsert ($customHeader2 )
1882
+
1883
+ $appRule3 = New-AzFirewallPolicyApplicationRule - Name $ruleName3 - Protocol $httpProtocol , $httpsProtocol - SourceAddress $sourceAddress - TargetFqdn $targetFqdn - TerminateTLS
1884
+ Assert-NotNull $appRule3
1885
+ $customHeader3 = New-AzFirewallPolicyApplicationRuleCustomHttpHeader - HeaderName $headerName3 - HeaderValue $headerValue3
1886
+ Assert-NotNull $customHeader3
1887
+ $appRule3.AddCustomHttpHeaderToInsert ($customHeader3 )
1888
+
1889
+ # Create Rule Collection
1890
+ $ruleCollection = New-AzFirewallPolicyFilterRuleCollection - Name $rcName - Priority $rcPriority - Rule $appRule1 , $appRule2 , $appRule3 - ActionType $actionType
1891
+
1892
+ # Create Rule Collection Group
1893
+ New-AzFirewallPolicyRuleCollectionGroup - Name $ruleGroupName - Priority 100 - RuleCollection $ruleCollection - FirewallPolicyObject $azureFirewallPolicy
1894
+
1895
+ # Set AzureFirewallPolicy
1896
+ Set-AzFirewallPolicy - InputObject $azureFirewallPolicy
1897
+
1898
+ # Get AzureFirewallPolicy
1899
+ $getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgName
1900
+
1901
+ # verification
1902
+ Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
1903
+ Assert-AreEqual $azureFirewallPolicyName $getAzureFirewallPolicy.Name
1904
+ Assert-NotNull $getAzureFirewallPolicy.Location
1905
+ Assert-AreEqual $location $getAzureFirewallPolicy.Location
1906
+ Assert-AreEqual 1 @ ($getAzureFirewallPolicy.RuleCollectionGroups ).Count
1907
+
1908
+ $getRcg = Get-AzFirewallPolicyRuleCollectionGroup - Name $ruleGroupName - AzureFirewallPolicy $getAzureFirewallPolicy
1909
+ Assert-AreEqual 1 @ ($getRcg.properties.ruleCollection ).Count
1910
+ $filterRuleCollection = $getRcg.Properties.GetRuleCollectionByName ($rcName )
1911
+ Assert-AreEqual 3 $filterRuleCollection.Rules.Count
1912
+
1913
+ # Verify application rule 1
1914
+ $getAppRule1 = $filterRuleCollection.GetRuleByName ($ruleName1 )
1915
+ Assert-AreEqual 1 $getAppRule1.HttpHeadersToInsert.Count
1916
+ Assert-AreEqual $headerName1 $getAppRule1.HttpHeadersToInsert [0 ].HeaderName
1917
+ Assert-AreEqual $headerValue1 $getAppRule1.HttpHeadersToInsert [0 ].HeaderValue
1918
+
1919
+ # Verify application rule 2
1920
+ $getAppRule2 = $filterRuleCollection.GetRuleByName ($ruleName2 )
1921
+ Assert-AreEqual 1 $getAppRule2.HttpHeadersToInsert.Count
1922
+ Assert-AreEqual $headerName2 $getAppRule2.HttpHeadersToInsert [0 ].HeaderName
1923
+ Assert-AreEqual $headerValue2 $getAppRule2.HttpHeadersToInsert [0 ].HeaderValue
1924
+
1925
+ # Verify application rule 2
1926
+ $getAppRule3 = $filterRuleCollection.GetRuleByName ($ruleName3 )
1927
+ Assert-AreEqual 1 $getAppRule3.HttpHeadersToInsert.Count
1928
+ Assert-AreEqual $headerName3 $getAppRule3.HttpHeadersToInsert [0 ].HeaderName
1929
+ Assert-AreEqual $headerValue3 $getAppRule3.HttpHeadersToInsert [0 ].HeaderValue
1930
+ }
1931
+ finally {
1932
+ # Cleanup
1933
+ Clean - ResourceGroup $rgname
1934
+ }
1820
1935
}
0 commit comments