public virtual void TestHostNames() { //create MachineList with a list of of Hostnames IPAddress addressHost1 = Extensions.GetAddressByName("1.2.3.1"); IPAddress addressHost4 = Extensions.GetAddressByName("1.2.3.4"); IPAddress addressMockHost4 = Org.Mockito.Mockito.Mock <IPAddress>(); Org.Mockito.Mockito.When(addressMockHost4.ToString()).ThenReturn("differentName"); IPAddress addressMockHost5 = Org.Mockito.Mockito.Mock <IPAddress>(); Org.Mockito.Mockito.When(addressMockHost5.ToString()).ThenReturn("host5"); MachineList.InetAddressFactory addressFactory = Org.Mockito.Mockito.Mock <MachineList.InetAddressFactory >(); Org.Mockito.Mockito.When(addressFactory.GetByName("1.2.3.4")).ThenReturn(addressMockHost4 ); Org.Mockito.Mockito.When(addressFactory.GetByName("1.2.3.5")).ThenReturn(addressMockHost5 ); Org.Mockito.Mockito.When(addressFactory.GetByName("host1")).ThenReturn(addressHost1 ); Org.Mockito.Mockito.When(addressFactory.GetByName("host4")).ThenReturn(addressHost4 ); MachineList ml = new MachineList(StringUtils.GetTrimmedStringCollection(HostList) , addressFactory); //test for inclusion with an known IP Assert.True(ml.Includes("1.2.3.4")); //test for exclusion with an unknown IP NUnit.Framework.Assert.IsFalse(ml.Includes("1.2.3.5")); }
/// <summary>Accepts an ip address and return true if ipAddress is in the list</summary> /// <param name="ipAddress"/> /// <returns>true if ipAddress is part of the list</returns> public virtual bool Includes(string ipAddress) { if (all) { return(true); } //check in the set of ipAddresses if ((ipAddresses != null) && ipAddresses.Contains(ipAddress)) { return(true); } //iterate through the ip ranges for inclusion if (cidrAddresses != null) { foreach (SubnetUtils.SubnetInfo cidrAddress in cidrAddresses) { if (cidrAddress.IsInRange(ipAddress)) { return(true); } } } //check if the ipAddress matches one of hostnames if (hostNames != null) { //convert given ipAddress to hostname and look for a match IPAddress hostAddr; try { hostAddr = addressFactory.GetByName(ipAddress); if ((hostAddr != null) && hostNames.Contains(hostAddr.ToString())) { return(true); } } catch (UnknownHostException) { } //ignore the exception and proceed to resolve the list of hosts //loop through host addresses and convert them to ip and look for a match foreach (string host in hostNames) { try { hostAddr = addressFactory.GetByName(host); } catch (UnknownHostException) { continue; } if (hostAddr.GetHostAddress().Equals(ipAddress)) { return(true); } } } return(false); }