public async Task PublicIPResolverOverDns_ResolveIPv6_ReturnsNullWhenDnsLookupThrowsAnException() { // Given var mockResponse = new Mock <IDnsQueryResponse>(); var addresses = new List <IPAddress> { IPAddress.Parse("2606:4700:4700::1111") }; var options = new PublicIPResolverOverDnsOptions("myip.test.com", QueryType.TXT, QueryClass.IN, addresses, addresses); mockResponse .SetupGet(r => r.Answers) .Throws(new Exception("Some exception")); _mockLookupClient .Setup(dns => dns.QueryAsync(It.IsAny <DnsQuestion>(), It.IsAny <DnsQueryAndServerOptions>(), It.IsAny <CancellationToken>())) .ReturnsAsync(mockResponse.Object); // When var resolver = new PublicIPResolverOverDns(_mockLookupClient.Object, _mockLogger.Object, options); var ip = await resolver.ResolveIPv6(); // Then _mockLogger.Verify(l => l.Verbose("Error resolving {ip} over dns: {message}", "ipv6", "Some exception")); Assert.Null(ip); }
public async Task PublicIPResolverOverDns_ResolveIPv4_ReturnsAnIPv4Address() { // Given var mockResponse = new Mock <IDnsQueryResponse>(); var addresses = new List <IPAddress> { IPAddress.Parse("1.1.1.1") }; var options = new PublicIPResolverOverDnsOptions("myip.test.com", QueryType.TXT, QueryClass.CH, addresses, addresses); mockResponse .SetupGet(r => r.Answers) .Returns(new List <DnsResourceRecord> { new TxtRecord( info: new ResourceRecordInfo("myip.test.com", ResourceRecordType.TXT, QueryClass.CH, 5000, 0), values: Array.Empty <string>(), utf8Values: new string[] { "10.0.0.1" } ) }); _mockLookupClient .Setup(dns => dns.QueryAsync(It.IsAny <DnsQuestion>(), It.IsAny <DnsQueryAndServerOptions>(), It.IsAny <CancellationToken>())) .ReturnsAsync(mockResponse.Object); // When var resolver = new PublicIPResolverOverDns(_mockLookupClient.Object, _mockLogger.Object, options); var ip = await resolver.ResolveIPv4(); // Then ip.Should().BeEquivalentTo(IPAddress.Parse("10.0.0.1")); }
public async Task PublicIPResolverOverDns_ResolveIPv4_ReturnsNullWhenNoTxtRecordsAreReturned() { // Given var mockResponse = new Mock <IDnsQueryResponse>(); var addresses = new List <IPAddress> { IPAddress.Parse("1.1.1.1") }; var options = new PublicIPResolverOverDnsOptions("myip.test.com", QueryType.TXT, QueryClass.CH, addresses, addresses); mockResponse .SetupGet(r => r.Answers) .Returns(new List <DnsResourceRecord> { }); _mockLookupClient .Setup(dns => dns.QueryAsync(It.IsAny <DnsQuestion>(), It.IsAny <DnsQueryAndServerOptions>(), It.IsAny <CancellationToken>())) .ReturnsAsync(mockResponse.Object); // When var resolver = new PublicIPResolverOverDns(_mockLookupClient.Object, _mockLogger.Object, options); var ip = await resolver.ResolveIPv4(); // Then Assert.Null(ip); }