@@ -1241,3 +1241,87 @@ function Test-DisconnectVNGVpnConnection
1241
1241
Clean - ResourceGroup $rgname
1242
1242
}
1243
1243
}
1244
+
1245
+ <#
1246
+ . SYNOPSIS
1247
+ Virtual network gateway NatRule tests
1248
+ #>
1249
+ function Test-VirtualNetworkGatewayNatRuleCRUD
1250
+ {
1251
+ # Setup
1252
+ $rgname = Get-ResourceGroupName
1253
+ $rname = Get-ResourceName
1254
+ $domainNameLabel = Get-ResourceName
1255
+ $vnetName = Get-ResourceName
1256
+ $publicIpName = Get-ResourceName
1257
+ $vnetGatewayConfigName = Get-ResourceName
1258
+ $rglocation = Get-ProviderLocation ResourceManagement
1259
+ $resourceTypeParent = " Microsoft.Network/virtualNetworkGateways"
1260
+ $location = Get-ProviderLocation $resourceTypeParent
1261
+
1262
+ try
1263
+ {
1264
+ # Create the resource group
1265
+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $rglocation - Tags @ { testtag = " testval" }
1266
+
1267
+ # Create the Virtual Network
1268
+ $subnet = New-AzVirtualNetworkSubnetConfig - Name " GatewaySubnet" - AddressPrefix 10.0 .0.0 / 24
1269
+ $vnet = New-AzVirtualNetwork - Name $vnetName - ResourceGroupName $rgname - Location $location - AddressPrefix 10.0 .0.0 / 16 - Subnet $subnet
1270
+ $vnet = Get-AzVirtualNetwork - Name $vnetName - ResourceGroupName $rgname
1271
+ $subnet = Get-AzVirtualNetworkSubnetConfig - Name " GatewaySubnet" - VirtualNetwork $vnet
1272
+
1273
+ # Create the publicip
1274
+ $publicip = New-AzPublicIpAddress - ResourceGroupName $rgname - name $publicIpName - location $location - AllocationMethod Dynamic - DomainNameLabel $domainNameLabel
1275
+
1276
+ # Create & Get virtualnetworkgateway with NatRules
1277
+ $vnetIpConfig = New-AzVirtualNetworkGatewayIpConfig - Name $vnetGatewayConfigName - PublicIpAddress $publicip - Subnet $subnet
1278
+ $ipconfigurationId = $vnetIpConfig.id
1279
+ $natRule = New-AzVirtualNetworkGatewayNatRule - Name " natRule1" - Type " Static" - Mode " IngressSnat" - InternalMapping @ (" 25.0.0.0/16" ) - ExternalMapping @ (" 30.0.0.0/16" )
1280
+ $job = New-AzVirtualNetworkGateway - ResourceGroupName $rgname - name $rname - location $location - IpConfigurations $vnetIpConfig - GatewayType Vpn - VpnType RouteBased - GatewaySku VpnGw2 - NatRule $natRule - EnableBgpRouteTranslationForNatFlag - AsJob
1281
+ $job | Wait-Job
1282
+ $actual = $job | Receive-Job
1283
+ $expected = Get-AzVirtualNetworkGateway - ResourceGroupName $rgname - name $rname
1284
+ Assert-AreEqual $expected.ResourceGroupName $actual.ResourceGroupName
1285
+ Assert-AreEqual $expected.Name $actual.Name
1286
+ Assert-AreEqual " Vpn" $expected.GatewayType
1287
+ Assert-AreEqual " RouteBased" $expected.VpnType
1288
+ Assert-AreEqual 1 @ ($expected.NatRules ).Count
1289
+
1290
+ # Updates & Get virtualnetworkgateway with NatRules
1291
+ $gateway = Get-AzVirtualNetworkGateway - ResourceGroupName $rgname - name $rname
1292
+ $vngNatRules = $gateway.NatRules
1293
+ $natRule = New-AzVirtualNetworkGatewayNatRule - Name " natRule2" - Type " Static" - Mode " EgressSnat" - InternalMapping @ (" 20.0.0.0/16" ) - ExternalMapping @ (" 50.0.0.0/16" )
1294
+ $vngNatRules.Add ($natrule )
1295
+ $updatedGateway = Set-AzVirtualNetworkGateway - VirtualNetworkGateway $gateway - NatRule $vngNatRules
1296
+ Assert-AreEqual 2 @ ($updatedGateway.NatRules ).Count
1297
+
1298
+ # List virtualNetworkGateways NatRules
1299
+ $list = Get-AzVirtualNetworkGatewayNatRule - ResourceGroupName $rgname - ParentResourceName $rname
1300
+ Assert-AreEqual 2 @ ($list ).Count
1301
+
1302
+ # update virtualNetworkGateways NatRule
1303
+ $natrule = Get-AzVirtualNetworkGatewayNatRule - ResourceGroupName $rgname - ParentResourceName $rname - Name " natRule2"
1304
+ $updatedNatRule = Update-AzVirtualNetworkGatewayNatRule - InputObject $natrule - ExternalMapping @ (" 40.0.0.0/16" )
1305
+ Assert-AreEqual " Succeeded" $updatedNatRule.ProvisioningState
1306
+
1307
+ # Delete virtualNetworkGatewayNatRules
1308
+ $job = Remove-AzVirtualNetworkGatewayNatRule - ResourceGroupName $rgname - ParentResourceName $rname - Name natRule1 - PassThru - Force - AsJob
1309
+ $job | Wait-Job
1310
+ $delete = $job | Receive-Job
1311
+ Assert-AreEqual true $delete
1312
+
1313
+ # Delete virtualNetworkGateway
1314
+ $job = Remove-AzVirtualNetworkGateway - ResourceGroupName $actual.ResourceGroupName - name $rname - PassThru - Force - AsJob
1315
+ $job | Wait-Job
1316
+ $delete = $job | Receive-Job
1317
+ Assert-AreEqual true $delete
1318
+
1319
+ $list = Get-AzVirtualNetworkGateway - ResourceGroupName $actual.ResourceGroupName
1320
+ Assert-AreEqual 0 @ ($list ).Count
1321
+ }
1322
+ finally
1323
+ {
1324
+ # Cleanup
1325
+ Clean - ResourceGroup $rgname
1326
+ }
1327
+ }
0 commit comments