public async Task Query_SecureEU() { using (var dot = new DotClient { Servers = new[] { new DotEndPoint { Hostname = "securedns.eu", Pins = new[] { "h3mufC43MEqRD6uE4lz6gAgULZ5/riqH/E+U+jE3H8g=" }, Address = IPAddress.Parse("146.185.167.43") }, } }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await dot.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); } }
public async Task Query_OneDeadServer() { using (var dot = new DotClient { Servers = new[] { new DotEndPoint { Address = IPAddress.Parse("127.0.0.1"), Port = 8530 }, new DotEndPoint { Hostname = "cloudflare-dns.com", Address = IPAddress.Parse("1.1.1.1") } } }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await dot.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); } }
public async Task Query_Google() { using (var dot = new DotClient { Servers = new[] { new DotEndPoint { Hostname = "dns.google", Address = IPAddress.Parse("8.8.8.8") } } }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await dot.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); } }
public async Task Query_Cloudflare_IPv6() { if (!SupportsIPv6) { Assert.Inconclusive("IPv6 not supported by OS."); } using (var dot = new DotClient { Servers = new[] { new DotEndPoint { Hostname = "cloudflare-dns.com", Address = IPAddress.Parse("2606:4700:4700::1111") } } }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await dot.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); } }
public void Query_InvalidServer_Hostname() { using (var dot = new DotClient { Servers = new[] { new DotEndPoint { Hostname = "bad-cloudflare-dns.com", // bad Address = IPAddress.Parse("1.1.1.1") } } }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); ExceptionAssert.Throws <Exception>(() => { var _ = dot.QueryAsync(query).Result; }); } }
public void Resolve_Unknown() { using (var dot = new DotClient()) { ExceptionAssert.Throws <IOException>(() => { var _ = dot.ResolveAsync("emanon.noname").Result; }); } }
public void Resolve() { using (var dot = new DotClient()) { var addresses = dot.ResolveAsync("github.com").Result.ToArray(); Assert.AreNotEqual(0, addresses.Length); addresses = dot.ResolveAsync("ipfs.io").Result.ToArray(); Assert.AreNotEqual(0, addresses.Length); } }
public async Task Reverse() { using (var dot = new DotClient()) { var name = await dot.ResolveAsync(IPAddress.Parse("1.1.1.1")); Assert.AreEqual("one.one.one.one", name); name = await dot.ResolveAsync(IPAddress.Parse("2606:4700:4700::1111")); Assert.AreEqual("one.one.one.one", name); } }
public async Task Resolve_Reverse() { using (var dot = new DotClient()) { var github = "github.com"; var addresses = await dot.ResolveAsync(github); foreach (var address in addresses) { var name = await dot.ResolveAsync(address); StringAssert.EndsWith(name.ToString(), ".com"); } } }
public async Task Query() { using (var dot = new DotClient()) { var query = new Message { RD = true, Id = 0x1234 }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await dot.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); } }
public void Query_UnknownName_NoThrow() { using (var dot = new DotClient { ThrowResponseError = false }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); var result = dot.QueryAsync(query).Result; Assert.AreEqual(MessageStatus.NameError, result.Status); } }
public void Query_UnknownName() { using (var dot = new DotClient()) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); ExceptionAssert.Throws <IOException>(() => { var _ = dot.QueryAsync(query).Result; }, "DNS error 'NameError'."); } }
public void NoSerer() { using (var dot = new DotClient { Servers = new DotEndPoint[0] }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); ExceptionAssert.Throws <Exception>(() => { var _ = dot.QueryAsync(query).Result; }); } }
public async Task SecureQuery_Has_RRs() { var dns = new DotClient(); var query = new Message { RD = true }.UseDnsSecurity(); query.Questions.Add(new Question { Name = "cloudflare-dns.com", Type = DnsType.AAAA }); var response = await dns.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); var opt = response.AdditionalRecords.OfType <OPTRecord>().Single(); Assert.AreEqual(true, opt.DO); var rrsig = response.Answers.OfType <RRSIGRecord>().Single(); Assert.AreEqual(DnsType.AAAA, rrsig.TypeCovered); }
public void Query_InvalidServer_IPAddress() { using (var dot = new DotClient { Servers = new[] { new DotEndPoint { Address = IPAddress.Any } } }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); ExceptionAssert.Throws <Exception>(() => { var _ = dot.QueryAsync(query).Result; }); } }
public void PublicServers() { var dot = new DotClient(); Assert.AreNotEqual(0, DotClient.PublicServers.Length); }