public async Task ItShouldReturnEmptyListForBadIpAddress(string ipAddress) { var reverseDnsLookup = new ReverseDnsLookup(_dnsResolver, _log); ReverseDnsResult result = await reverseDnsLookup.Lookup(ipAddress); Assert.That(result.ForwardResponses.Count, Is.EqualTo(0)); Assert.IsNull(result.OriginalIpAddress); }
public async Task ItShouldLogErrorWhenUnableToDoLookupForPtr(string ipAddress) { ReverseDnsQueryResponse response = new ReverseDnsQueryResponse(true, "Something has gone wrong!", null); A.CallTo(() => _dnsResolver.QueryPtrAsync(A <IPAddress> ._)).Returns(response); var reverseDnsLookup = new ReverseDnsLookup(_dnsResolver, _log); ReverseDnsResult result = await reverseDnsLookup.Lookup(ipAddress); Assert.That(_log.Warnings.Count, Is.EqualTo(1)); Assert.That(result.ForwardResponses.Count, Is.EqualTo(0)); Assert.IsNull(result.OriginalIpAddress); }
public async Task ItShouldProcessAllValidLookups(string ipAddress) { string googleHostName = "google.com"; string googleIp1 = "192.168.0.1"; string googleIp2 = "192.168.0.2"; string yahooHostName = "yahoo.com"; string yahooIp1 = "192.168.1.1"; ReverseDnsQueryResponse ptrDnsQueryResponse = new ReverseDnsQueryResponse(false, string.Empty, new List <string>() { googleHostName, yahooHostName }); ReverseDnsQueryResponse googleAddressDnsQueryResponse = new ReverseDnsQueryResponse(false, string.Empty, new List <string>() { googleIp1, googleIp2 }); ReverseDnsQueryResponse yahooAddressDnsQueryResponse = new ReverseDnsQueryResponse(false, string.Empty, new List <string>() { yahooIp1 }); A.CallTo(() => _dnsResolver.QueryPtrAsync(A <IPAddress> ._)).Returns(ptrDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <ARecord>(googleHostName, QueryType.A)).Returns(googleAddressDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <AaaaRecord>(googleHostName, QueryType.AAAA)).Returns(googleAddressDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <ARecord>(yahooHostName, QueryType.A)).Returns(yahooAddressDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <AaaaRecord>(yahooHostName, QueryType.AAAA)).Returns(yahooAddressDnsQueryResponse); var reverseDnsLookup = new ReverseDnsLookup(_dnsResolver, _log); ReverseDnsResult reverseDnsResult = await reverseDnsLookup.Lookup(ipAddress); Assert.That(_log.Errors.Count, Is.EqualTo(0)); Assert.That(_log.Warnings.Count, Is.EqualTo(0)); Assert.That(reverseDnsResult.ForwardResponses.Count, Is.EqualTo(2)); Assert.That(reverseDnsResult.ForwardResponses[0].Host, Is.EqualTo(googleHostName)); Assert.That(reverseDnsResult.ForwardResponses[0].IpAddresses.Count, Is.EqualTo(2)); Assert.That(reverseDnsResult.ForwardResponses[0].IpAddresses[0], Is.EqualTo(googleIp1)); Assert.That(reverseDnsResult.ForwardResponses[0].IpAddresses[1], Is.EqualTo(googleIp2)); Assert.That(reverseDnsResult.ForwardResponses[1].Host, Is.EqualTo(yahooHostName)); Assert.That(reverseDnsResult.ForwardResponses[1].IpAddresses.Count, Is.EqualTo(1)); Assert.That(reverseDnsResult.ForwardResponses[1].IpAddresses[0], Is.EqualTo(yahooIp1)); }
public async Task ItShouldLogErrorWhenValidPtrButFailsOnForwardLookup(string ipAddress) { ReverseDnsQueryResponse ptrDnsQueryResponse = new ReverseDnsQueryResponse(false, string.Empty, new List <string>() { "google.com" }); ReverseDnsQueryResponse addressDnsQueryResponse = new ReverseDnsQueryResponse(true, "Something has gone wrong!", null); A.CallTo(() => _dnsResolver.QueryPtrAsync(A <IPAddress> ._)).Returns(ptrDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <ARecord>(A <string> ._, QueryType.A)).Returns(addressDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <AaaaRecord>(A <string> ._, QueryType.AAAA)).Returns(addressDnsQueryResponse); var reverseDnsLookup = new ReverseDnsLookup(_dnsResolver, _log); ReverseDnsResult reverseDnsResult = await reverseDnsLookup.Lookup(ipAddress); Assert.That(_log.Warnings.Count, Is.EqualTo(1)); Assert.That(reverseDnsResult.ForwardResponses.Count, Is.EqualTo(0)); }
public async Task ItShouldOnlyProcessValidLookupsAndNotStopWhenInvalid(string ipAddress) { string googleHostName = "google.com"; string googleIp1 = "192.168.0.1"; string yahooHostName = "yahoo.com"; ReverseDnsQueryResponse ptrDnsQueryResponse = new ReverseDnsQueryResponse(false, string.Empty, new List <string>() { googleHostName, yahooHostName }); ReverseDnsQueryResponse host1AddressDnsQueryResponse = new ReverseDnsQueryResponse(false, string.Empty, new List <string>() { googleIp1 }); ReverseDnsQueryResponse host2AaddressDnsQueryResponse = new ReverseDnsQueryResponse(true, "Something has gone wrong!", null); A.CallTo(() => _dnsResolver.QueryPtrAsync(A <IPAddress> ._)).Returns(ptrDnsQueryResponse); //setup for only host1 A.CallTo(() => _dnsResolver.QueryAddressAsync <ARecord>(googleHostName, QueryType.A)).Returns(host1AddressDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <AaaaRecord>(googleHostName, QueryType.AAAA)).Returns(host1AddressDnsQueryResponse); //setup for only host1 A.CallTo(() => _dnsResolver.QueryAddressAsync <ARecord>(yahooHostName, QueryType.A)).Returns(host2AaddressDnsQueryResponse); A.CallTo(() => _dnsResolver.QueryAddressAsync <AaaaRecord>(yahooHostName, QueryType.AAAA)).Returns(host2AaddressDnsQueryResponse); var reverseDnsLookup = new ReverseDnsLookup(_dnsResolver, _log); ReverseDnsResult reverseDnsResults = await reverseDnsLookup.Lookup(ipAddress); Assert.That(_log.Warnings.Count, Is.EqualTo(1)); Assert.That(reverseDnsResults.ForwardResponses.Count, Is.EqualTo(1)); Assert.That(reverseDnsResults.ForwardResponses[0].Host, Is.EqualTo(googleHostName)); Assert.That(reverseDnsResults.ForwardResponses[0].IpAddresses.Count, Is.EqualTo(1)); Assert.That(reverseDnsResults.ForwardResponses[0].IpAddresses[0], Is.EqualTo(googleIp1)); }