@@ -1241,3 +1241,87 @@ function Test-DisconnectVNGVpnConnection
12411241 Clean - ResourceGroup $rgname
12421242 }
12431243}
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