public void TestSetAndDeleteNetworkSecurityRule() { using (var undoContext = UndoContext.Current) { undoContext.Start(); using (NetworkTestBase _testFixture = new NetworkTestBase()) { // setup string securityGroupName = _testFixture.GenerateRandomNetworkSecurityGroupName(); string securityGroupLabel = _testFixture.GenerateRandomName(); string securityGroupLocation = _testFixture.DefaultLocation; string ruleName = _testFixture.GenerateRandomName(); string action = "Allow"; string sourceAddressPrefix = "*"; string sourcePortRange = "*"; string destinationAddressPrefix = "*"; string destinationPortRange = "*"; int priority = 500; string protocol = "TCP"; string type = "Inbound"; // action _testFixture.CreateNetworkSecurityGroup(securityGroupName, securityGroupLabel, securityGroupLocation); _testFixture.SetRuleToSecurityGroup( securityGroupName, ruleName, action, sourceAddressPrefix, sourcePortRange, destinationAddressPrefix, destinationPortRange, priority, protocol, type); // assert NetworkSecurityGroupGetResponse response = _testFixture.NetworkClient.NetworkSecurityGroups.Get(securityGroupName, "full"); Assert.Equal(securityGroupName, response.Name); Assert.Equal(securityGroupLabel, response.Label); Assert.Equal(securityGroupLocation, response.Location); Assert.NotEmpty(response.Rules.Where(r => string.Equals(r.Name, ruleName))); NetworkSecurityRule rule = response.Rules.First(); Assert.Equal(ruleName, rule.Name); Assert.Equal(sourceAddressPrefix, rule.SourceAddressPrefix); Assert.Equal(sourcePortRange, rule.SourcePortRange); Assert.Equal(destinationAddressPrefix, rule.DestinationAddressPrefix); Assert.Equal(destinationPortRange, rule.DestinationPortRange); Assert.Equal(priority, rule.Priority); Assert.Equal(protocol, rule.Protocol); Assert.Equal(action, rule.Action); Assert.Equal(type, rule.Type); // action _testFixture.NetworkClient.NetworkSecurityGroups.DeleteRule(securityGroupName, ruleName); NetworkSecurityGroupGetResponse afterDeleteGetRuleresponse = _testFixture.NetworkClient.NetworkSecurityGroups.Get(securityGroupName, "full"); Assert.Empty(afterDeleteGetRuleresponse.Rules.Where(r => string.Equals(r.Name, ruleName))); } } }
/// <summary> /// Converts the <see cref="sourceValue" /> parameter to the <see cref="destinationType" /> parameter using <see cref="formatProvider" /// /> and <see cref="ignoreCase" /> /// </summary> /// <param name="sourceValue">the value to convert into an instance of <see cref="NetworkSecurityRule" />.</param> /// <returns> /// an instance of <see cref="NetworkSecurityRule" />, or <c>null</c> if there is no suitable conversion. /// </returns> public static object ConvertFrom(dynamic sourceValue) { if (null == sourceValue) { return(null); } try { NetworkSecurityRule.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString()); } catch { // Unable to use JSON pattern } try { return(new NetworkSecurityRule { Name = sourceValue.Name, Description = sourceValue.Description, Resources = NetworkSecurityRuleResourcesTypeConverter.ConvertFrom(sourceValue.Resources), }); } catch { } return(null); }
private static CreateVirtualNetworkResult CreateVirtualNetwork(string suffix, ResourceGroup resourceGroup) { var virtualNetwork = new VirtualNetwork($"vnet-{suffix}", new VirtualNetworkArgs { AddressSpaces = { "10.0.0.0/16" }, ResourceGroupName = resourceGroup.Name }); var subnet = new Subnet("apps", new SubnetArgs { ResourceGroupName = resourceGroup.Name, VirtualNetworkName = virtualNetwork.Name, AddressPrefixes = { "10.0.1.0/24", } }); var nsg = new NetworkSecurityGroup($"nsg-{suffix}", new NetworkSecurityGroupArgs { ResourceGroupName = resourceGroup.Name, }); var nsgSshAllowInbound = new NetworkSecurityRule("ssh-allow-inbound", new NetworkSecurityRuleArgs { Priority = 1001, Direction = "Inbound", Access = "Allow", Protocol = "Tcp", SourcePortRange = "*", DestinationPortRange = "22", SourceAddressPrefix = "*", DestinationAddressPrefix = "*", NetworkSecurityGroupName = nsg.Name, ResourceGroupName = resourceGroup.Name, }); return(new CreateVirtualNetworkResult { NetworkSecurityGroupId = nsg.Id, SubnetId = subnet.Id }); }