@@ -2095,4 +2095,177 @@ function Test-AzureFirewallPolicyIDPSProfiles {
2095
2095
# Cleanup
2096
2096
Clean - ResourceGroup $rgname
2097
2097
}
2098
+ }
2099
+ <#
2100
+ . SYNOPSIS
2101
+ Tests function Test-AzureFirewallPolicyDraft.
2102
+ #>
2103
+ function Test-AzureFirewallPolicyDraft {
2104
+ # Setup
2105
+ $rgname = Get-ResourceGroupName
2106
+ $azureFirewallPolicyName = Get-ResourceName
2107
+ $azureFirewallPolicyAsJobName = Get-ResourceName
2108
+ $resourceTypeParent = " Microsoft.Network/FirewallPolicies"
2109
+ $location = " westus2"
2110
+ $tier = " Premium"
2111
+
2112
+ try {
2113
+ # Create the resource group
2114
+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $location - Tags @ { testtag = " testval" }
2115
+ # Intrusion Detection Settings
2116
+ $intrusionDetection = New-AzFirewallPolicyIntrusionDetection - Mode " Alert"
2117
+ # Create AzureFirewallPolicy
2118
+ $azureFirewallPolicy = New-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname - Location $location - SkuTier $tier - IntrusionDetection $intrusionDetection
2119
+ # Create AzureFirewallPolicyDraft
2120
+ $newAzureFirewallPolicyDraft = New-AzFirewallPolicyDraft - FirewallPolicyObject $azureFirewallPolicy
2121
+ # Get AzureFirewallPolicyDraft
2122
+ $getAzureFirewallPolicyDraft = Get-AzFirewallPolicyDraft - AzureFirewallPolicyName $azureFirewallPolicyName - ResourceGroupName $rgname
2123
+
2124
+ # verification
2125
+ Assert-NotNull $getAzureFirewallPolicyDraft.IntrusionDetection
2126
+ Assert-AreEqual " Alert" $getAzureFirewallPolicyDraft.IntrusionDetection.Mode
2127
+ Assert-Null $getAzureFirewallPolicyDraft.Snat
2128
+
2129
+ # Updated Intrusion Detection Settings
2130
+ $intrusionDetection = New-AzFirewallPolicyIntrusionDetection - Mode " Deny"
2131
+ $setAzureFirewallPolicy = Set-AzFirewallPolicyDraft - AzureFirewallPolicyName $azureFirewallPolicyName - ResourceGroupName $rgname - IntrusionDetection $intrusionDetection
2132
+ # Get AzureFirewallPolicyDraft
2133
+ $getAzureFirewallPolicyDraft = Get-AzFirewallPolicyDraft - AzureFirewallPolicyName $azureFirewallPolicyName - ResourceGroupName $rgname
2134
+
2135
+ # verification
2136
+ Assert-AreEqual " Deny" $getAzureFirewallPolicyDraft.IntrusionDetection.Mode
2137
+
2138
+ # Deploy policy draft
2139
+ Deploy-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
2140
+ # Get AzureFirewallPolicy
2141
+ $getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
2142
+ # verification
2143
+ Assert-NotNull $getAzureFirewallPolicyDraft.IntrusionDetection
2144
+ Assert-AreEqual " Deny" $getAzureFirewallPolicyDraft.IntrusionDetection.Mode
2145
+ }
2146
+
2147
+ finally {
2148
+ # Cleanup
2149
+ Clean - ResourceGroup $rgname
2150
+ }
2151
+ }
2152
+
2153
+ <#
2154
+ . SYNOPSIS
2155
+ Tests function Test-AzureFirewallPolicyRCGDraft.
2156
+ #>
2157
+ function Test-AzureFirewallPolicyRCGDraft {
2158
+ # Setup
2159
+ $rgname = Get-ResourceGroupName
2160
+ $azureFirewallPolicyName = Get-ResourceName
2161
+ $azureFirewallPolicyAsJobName = Get-ResourceName
2162
+ $resourceTypeParent = " Microsoft.Network/FirewallPolicies"
2163
+ $location = " canadacentral"
2164
+
2165
+ $ruleGroupName = Get-ResourceName
2166
+ $ruleGroupDraftName = Get-ResourceName
2167
+
2168
+ # AzureFirewallPolicyNatRuleCollection
2169
+ $natRcName = " natRc"
2170
+ $natRcName2 = " natRc2"
2171
+ $natRcPriority = 100
2172
+ $natRcActionType = " Dnat"
2173
+
2174
+ # AzureFirewallPolicyNatRule 1
2175
+ $natRule1Name = " natRule"
2176
+ $natRule1Desc = " desc1"
2177
+ $natRule1SourceAddress1 = " 10.0.0.0"
2178
+ $natRule1SourceAddress2 = " 111.1.0.0/24"
2179
+ $natRule1Protocol1 = " UDP"
2180
+ $natRule1Protocol2 = " TCP"
2181
+ $natRule1DestinationAddress1 = " 10.10.10.1"
2182
+ $natRule1DestinationPort1 = " 90"
2183
+ $natRule1TranslatedFqdn = " server1.internal.com"
2184
+ $natRule1TranslatedPort = " 91"
2185
+
2186
+ $pipelineRcPriority = 154
2187
+
2188
+ try
2189
+ {
2190
+ # Create the resource group
2191
+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $location - Tags @ { testtag = " testval" }
2192
+ # Create AzureFirewallPolicy
2193
+ $azureFirewallPolicy = New-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname - Location $location
2194
+ # Get AzureFirewallPolicy
2195
+ $getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
2196
+ # Create NAT rule
2197
+ $natRule = New-AzFirewallPolicyNatRule - Name $natRule1Name - Description $natRule1Desc - Protocol $natRule1Protocol1 , $natRule1Protocol2 - SourceAddress $natRule1SourceAddress1 , $natRule1SourceAddress2 - DestinationAddress $natRule1DestinationAddress1 - DestinationPort $natRule1DestinationPort1 - TranslatedFqdn $natRule1TranslatedFqdn - TranslatedPort $natRule1TranslatedPort
2198
+ # Create a NAT Rule Collection
2199
+ $natRc = New-AzFirewallPolicyNatRuleCollection - Name $natRcName - ActionType $natRcActionType - Priority $natRcPriority - Rule $natRule
2200
+ New-AzFirewallPolicyRuleCollectionGroup - Name $ruleGroupName - Priority 100 - RuleCollection $natRc - FirewallPolicyObject $azureFirewallPolicy
2201
+ # Set AzureFirewallPolicy
2202
+ Set-AzFirewallPolicy - InputObject $azureFirewallPolicy
2203
+
2204
+ # Create Policy Draft
2205
+ New-AzFirewallPolicyDraft - AzureFirewallPolicyName $azureFirewallPolicyName - ResourceGroupName $rgname
2206
+ # Create a NAT Rule Collection
2207
+ $natRc2 = New-AzFirewallPolicyNatRuleCollection - Name $natRcName2 - ActionType $natRcActionType - Priority $natRcPriority - Rule $natRule
2208
+ # Create RuleCollection Group Draft
2209
+ New-AzFirewallPolicyRuleCollectionGroupDraft - AzureFirewallPolicyRuleCollectionGroupName $ruleGroupName - Priority 100 - RuleCollection $natRc2 - FirewallPolicyObject $azureFirewallPolicy
2210
+ # Get AzureFirewallPolicy Rule Collection Group draft
2211
+ $getAzureFirewallPolicyDraft = Get-AzFirewallPolicyDraft - AzureFirewallPolicyName $azureFirewallPolicyName - ResourceGroupName $rgName
2212
+ $getAzureFirewallPolicyRuleCollectionGroupDraft = Get-AzFirewallPolicyRuleCollectionGroupDraft - AzureFirewallPolicyRuleCollectionGroupName $ruleGroupName - FirewallPolicyObject $azureFirewallPolicy
2213
+
2214
+ # Verification
2215
+ Assert-AreEqual 1 @ ($getAzureFirewallPolicyRuleCollectionGroupDraft.properties.ruleCollection ).Count
2216
+ $natRuleCollection = $getAzureFirewallPolicyRuleCollectionGroupDraft.Properties.GetRuleCollectionByName ($natRcName2 )
2217
+
2218
+ # Verify NAT rule collection and NAT rule
2219
+ $natRule = $natRuleCollection.GetRuleByName ($natRule1Name )
2220
+
2221
+ Assert-AreEqual $natRcName2 $natRuleCollection.Name
2222
+ Assert-AreEqual $natRcPriority $natRuleCollection.Priority
2223
+
2224
+ Assert-AreEqual $natRule1Name $natRule.Name
2225
+
2226
+ Assert-AreEqual 2 $natRule.SourceAddresses.Count
2227
+ Assert-AreEqual $natRule1SourceAddress1 $natRule.SourceAddresses [0 ]
2228
+ Assert-AreEqual $natRule1SourceAddress2 $natRule.SourceAddresses [1 ]
2229
+
2230
+ Assert-AreEqual 1 $natRule.DestinationAddresses.Count
2231
+
2232
+ Assert-AreEqual 2 $natRule.Protocols.Count
2233
+ Assert-AreEqual $natRule1Protocol1 $natRule.Protocols [0 ]
2234
+ Assert-AreEqual $natRule1Protocol2 $natRule.Protocols [1 ]
2235
+
2236
+ Assert-AreEqual 1 $natRule.DestinationPorts.Count
2237
+ Assert-AreEqual $natRule1DestinationPort1 $natRule.DestinationPorts [0 ]
2238
+
2239
+ Assert-AreEqual $natRule1TranslatedFqdn $natRule.TranslatedFqdn
2240
+ Assert-AreEqual $natRule1TranslatedPort $natRule.TranslatedPort
2241
+ $testPipelineRg = Get-AzFirewallPolicyRuleCollectionGroupDraft - AzureFirewallPolicyRuleCollectionGroupName $ruleGroupName - AzureFirewallPolicyName $getAzureFirewallPolicy.Name - ResourceGroupName $rgname
2242
+ $testPipelineRg | Set-AzFirewallPolicyRuleCollectionGroupDraft - Priority $pipelineRcPriority
2243
+
2244
+ $testPipelineRg = Get-AzFirewallPolicyRuleCollectionGroupDraft - AzureFirewallPolicyRuleCollectionGroupName $ruleGroupName - AzureFirewallPolicyName $getAzureFirewallPolicy.Name - ResourceGroupName $rgname
2245
+ Assert-AreEqual $pipelineRcPriority $testPipelineRg.properties.Priority
2246
+
2247
+ $azureFirewallPolicyAsJob = New-AzFirewallPolicy - Name $azureFirewallPolicyAsJobName - ResourceGroupName $rgname - Location $location - AsJob
2248
+ $result = $azureFirewallPolicyAsJob | Wait-Job
2249
+ Assert-AreEqual " Completed" $result.State
2250
+
2251
+ # Deploy policy draft
2252
+ Deploy-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
2253
+ # Get AzureFirewallPolicy
2254
+ $getAzureFirewallPolicyRuleCollectionGroup = Get-AzFirewallPolicyRuleCollectionGroup - Name $ruleGroupName - ResourceGroupName $rgname - AzureFirewallPolicyName $azureFirewallPolicyName
2255
+ $getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgName
2256
+
2257
+ # verification
2258
+ Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
2259
+ Assert-AreEqual $azureFirewallPolicyName $getAzureFirewallPolicy.Name
2260
+ Assert-NotNull $getAzureFirewallPolicy.Location
2261
+ Assert-AreEqual $location $getAzureFirewallPolicy.Location
2262
+
2263
+ # Check rule collection groups count
2264
+ Assert-AreEqual 1 @ ($getAzureFirewallPolicy.RuleCollectionGroups ).Count
2265
+ Assert-AreEqual 1 @ ($getAzureFirewallPolicyRuleCollectionGroup.properties.ruleCollection ).Count
2266
+ }
2267
+ finally {
2268
+ # Cleanup
2269
+ Clean - ResourceGroup $rgname
2270
+ }
2098
2271
}
0 commit comments