From 62bd649c3b410e702341fbd1c08d9f84268c4b55 Mon Sep 17 00:00:00 2001 From: Alan Edwardes Date: Fri, 1 Dec 2023 13:09:56 +0000 Subject: [PATCH] Adds more implicit conversion to and from string for DnsLabels. --- misc/Ae.Dns.Console/Startup.cs | 2 +- samples/BasicUdpServer/Program.cs | 2 +- src/Ae.Dns.Client/DnsRecursiveClient.cs | 4 +- src/Ae.Dns.Client/DnsUdpClient.cs | 2 +- .../Filters/DnsLocalNetworkQueryFilter.cs | 2 +- .../Filters/DnsRemoteSetFilter.cs | 2 +- .../Lookup/DnsStaticLookupClient.cs | 2 +- src/Ae.Dns.Protocol/DnsLabels.cs | 12 +++++ src/Ae.Dns.Protocol/DnsQueryFactory.cs | 2 +- .../Records/DnsDomainResource.cs | 2 +- src/Ae.Dns.Protocol/Records/DnsMxResource.cs | 2 +- src/Ae.Dns.Protocol/Records/DnsSoaResource.cs | 2 +- .../Records/DnsTextResource.cs | 6 ++- .../ServiceBinding/SvcStringParameter.cs | 2 +- .../Client/ClientTestExtensions.cs | 2 +- .../Client/DnsCachingClientTests.cs | 2 +- tests/Ae.Dns.Tests/Protocol/DnsAnswerTests.cs | 44 +++++++++---------- .../Protocol/DnsDelegatingHandlerTests.cs | 2 +- tests/Ae.Dns.Tests/Protocol/DnsLabelsTests.cs | 2 +- .../Protocol/DnsQueryFactoryTests.cs | 14 +++--- tests/Ae.Dns.Tests/Protocol/DnsQueryTests.cs | 10 ++--- 21 files changed, 67 insertions(+), 53 deletions(-) diff --git a/misc/Ae.Dns.Console/Startup.cs b/misc/Ae.Dns.Console/Startup.cs index c287867..686a654 100644 --- a/misc/Ae.Dns.Console/Startup.cs +++ b/misc/Ae.Dns.Console/Startup.cs @@ -329,7 +329,7 @@ public DnsHeaderLight(DnsHeader header) { ResponseCode = header.ResponseCode; QueryType = header.QueryType; - Host = header.Host.ToString(); + Host = header.Host; Resolver = (header.Tags.ContainsKey("Resolver") ? header.Tags["Resolver"].ToString() : null) ?? "Unknown"; BlockReason = (header.Tags.ContainsKey("BlockReason") ? header.Tags["BlockReason"].ToString() : null) ?? "None"; Server = (header.Tags.ContainsKey("Server") ? header.Tags["Server"].ToString() : null) ?? "Unknown"; diff --git a/samples/BasicUdpServer/Program.cs b/samples/BasicUdpServer/Program.cs index c74270f..3203750 100644 --- a/samples/BasicUdpServer/Program.cs +++ b/samples/BasicUdpServer/Program.cs @@ -8,7 +8,7 @@ using IDnsClient dnsClient = new DnsUdpClient(IPAddress.Parse("1.1.1.1")); // Allow anything that isn't www.google.com -IDnsFilter dnsFilter = new DnsDelegateFilter(x => x.Header.Host.ToString() != "www.google.com"); +IDnsFilter dnsFilter = new DnsDelegateFilter(x => x.Header.Host != "www.google.com"); using IDnsClient filterClient = new DnsFilterClient(dnsFilter, dnsClient); diff --git a/src/Ae.Dns.Client/DnsRecursiveClient.cs b/src/Ae.Dns.Client/DnsRecursiveClient.cs index 0c0cb77..d817fef 100644 --- a/src/Ae.Dns.Client/DnsRecursiveClient.cs +++ b/src/Ae.Dns.Client/DnsRecursiveClient.cs @@ -77,10 +77,10 @@ private async Task QueryRecursive(DnsMessage query, int depth, Cance continue; } - lookup = await LookupNameserverIpAddress(query.Header.Host.ToString(), depth, token); + lookup = await LookupNameserverIpAddress(query.Header.Host, depth, token); } - throw new DnsClientException($"Too much recursion ({depth}) or too many lookups ({lookups})", query.Header.Host.ToString()); + throw new DnsClientException($"Too much recursion ({depth}) or too many lookups ({lookups})", query.Header.Host); } private async Task LookupNameserverIpAddress(string nameserver, int depth, CancellationToken token) diff --git a/src/Ae.Dns.Client/DnsUdpClient.cs b/src/Ae.Dns.Client/DnsUdpClient.cs index fd0f662..79b1410 100644 --- a/src/Ae.Dns.Client/DnsUdpClient.cs +++ b/src/Ae.Dns.Client/DnsUdpClient.cs @@ -33,7 +33,7 @@ private static MessageId ToMessageId(DnsMessage message) return new MessageId { Id = message.Header.Id, - Name = message.Header.Host.ToString(), + Name = message.Header.Host, Type = message.Header.QueryType, Class = message.Header.QueryClass }; diff --git a/src/Ae.Dns.Client/Filters/DnsLocalNetworkQueryFilter.cs b/src/Ae.Dns.Client/Filters/DnsLocalNetworkQueryFilter.cs index 8ce19d3..749eede 100644 --- a/src/Ae.Dns.Client/Filters/DnsLocalNetworkQueryFilter.cs +++ b/src/Ae.Dns.Client/Filters/DnsLocalNetworkQueryFilter.cs @@ -92,7 +92,7 @@ public bool IsPermitted(DnsMessage query) // See https://www.ietf.org/archive/id/draft-pauly-add-resolver-discovery-01.html // If you're running your own server on a local network, you probably don't want clients // bypassing the server and going directly to the upstream (if one happens to respond to this) - if (query.Header.QueryType == DnsQueryType.SVCB && query.Header.Host.ToString() == "_dns.resolver.arpa") + if (query.Header.QueryType == DnsQueryType.SVCB && query.Header.Host == "_dns.resolver.arpa") { query.Header.Tags["BlockReason"] = $"{nameof(DnsLocalNetworkQueryFilter)}(DNS resolver discovery)"; return false; diff --git a/src/Ae.Dns.Client/Filters/DnsRemoteSetFilter.cs b/src/Ae.Dns.Client/Filters/DnsRemoteSetFilter.cs index 71f20dc..55b1c84 100644 --- a/src/Ae.Dns.Client/Filters/DnsRemoteSetFilter.cs +++ b/src/Ae.Dns.Client/Filters/DnsRemoteSetFilter.cs @@ -93,7 +93,7 @@ public bool IsPermitted(DnsMessage query) { foreach (var filterSet in _filterSets) { - if (filterSet.Value.Contains(query.Header.Host.ToString())) + if (filterSet.Value.Contains(query.Header.Host)) { query.Header.Tags["BlockReason"] = $"{nameof(DnsRemoteSetFilter)}({filterSet.Key})"; return false; diff --git a/src/Ae.Dns.Client/Lookup/DnsStaticLookupClient.cs b/src/Ae.Dns.Client/Lookup/DnsStaticLookupClient.cs index b6e78d6..2d469f4 100644 --- a/src/Ae.Dns.Client/Lookup/DnsStaticLookupClient.cs +++ b/src/Ae.Dns.Client/Lookup/DnsStaticLookupClient.cs @@ -63,7 +63,7 @@ public async Task Query(DnsMessage query, CancellationToken token = foreach (var source in _sources) { - if (source.TryForwardLookup(query.Header.Host.ToString(), out var addresses)) + if (source.TryForwardLookup(query.Header.Host, out var addresses)) { // This might return zero addresses, but that's OK. We must not return an error. // For reasoning behind this, see https://www.rfc-editor.org/rfc/rfc4074#section-3 diff --git a/src/Ae.Dns.Protocol/DnsLabels.cs b/src/Ae.Dns.Protocol/DnsLabels.cs index b8c0a3a..6c6a1f8 100644 --- a/src/Ae.Dns.Protocol/DnsLabels.cs +++ b/src/Ae.Dns.Protocol/DnsLabels.cs @@ -49,5 +49,17 @@ namespace Ae.Dns.Protocol /// /// public static implicit operator DnsLabels(string[] labels) => new DnsLabels(labels); + + /// + /// Convert a string to . + /// + /// + public static implicit operator DnsLabels(string labels) => new DnsLabels(labels); + + /// + /// Convert an instance of to a string. + /// + /// + public static implicit operator string(DnsLabels labels) => labels.ToString(); } } diff --git a/src/Ae.Dns.Protocol/DnsQueryFactory.cs b/src/Ae.Dns.Protocol/DnsQueryFactory.cs index 16ad58b..36d85ce 100644 --- a/src/Ae.Dns.Protocol/DnsQueryFactory.cs +++ b/src/Ae.Dns.Protocol/DnsQueryFactory.cs @@ -34,7 +34,7 @@ public static DnsMessage CreateQuery(string host, DnsQueryType type = DnsQueryTy Header = new DnsHeader { Id = GenerateId(), - Host = new DnsLabels(host), + Host = host, QueryType = type, QueryClass = DnsQueryClass.IN, OperationCode = DnsOperationCode.QUERY, diff --git a/src/Ae.Dns.Protocol/Records/DnsDomainResource.cs b/src/Ae.Dns.Protocol/Records/DnsDomainResource.cs index 08f74aa..e01cf65 100644 --- a/src/Ae.Dns.Protocol/Records/DnsDomainResource.cs +++ b/src/Ae.Dns.Protocol/Records/DnsDomainResource.cs @@ -11,7 +11,7 @@ public sealed class DnsDomainResource : DnsStringResource /// /// Get the value of this entry as a domain name. /// - public string Domain => Entries.ToString(); + public string Domain => Entries; /// public override string ToString() => Domain; diff --git a/src/Ae.Dns.Protocol/Records/DnsMxResource.cs b/src/Ae.Dns.Protocol/Records/DnsMxResource.cs index 2d7c7ef..450bedb 100644 --- a/src/Ae.Dns.Protocol/Records/DnsMxResource.cs +++ b/src/Ae.Dns.Protocol/Records/DnsMxResource.cs @@ -23,7 +23,7 @@ public sealed class DnsMxResource : DnsStringResource, IEquatable /// /// The host name must map directly to one or more address records (A, or AAAA) in the DNS, and must not point to any CNAME records. /// - public string Exchange => Entries.ToString(); + public string Exchange => Entries; /// protected override bool CanUseCompression => true; diff --git a/src/Ae.Dns.Protocol/Records/DnsSoaResource.cs b/src/Ae.Dns.Protocol/Records/DnsSoaResource.cs index 40f2d46..c5211f9 100644 --- a/src/Ae.Dns.Protocol/Records/DnsSoaResource.cs +++ b/src/Ae.Dns.Protocol/Records/DnsSoaResource.cs @@ -89,7 +89,7 @@ public void ReadBytes(ReadOnlyMemory bytes, ref int offset, int length) } /// - public override string ToString() => MName.ToString(); + public override string ToString() => MName; /// public void WriteBytes(Memory bytes, ref int offset) diff --git a/src/Ae.Dns.Protocol/Records/DnsTextResource.cs b/src/Ae.Dns.Protocol/Records/DnsTextResource.cs index 858b887..1200581 100644 --- a/src/Ae.Dns.Protocol/Records/DnsTextResource.cs +++ b/src/Ae.Dns.Protocol/Records/DnsTextResource.cs @@ -1,4 +1,6 @@ -namespace Ae.Dns.Protocol.Records +using System.Linq; + +namespace Ae.Dns.Protocol.Records { /// /// Represents a DNS text resource containing a string. @@ -9,6 +11,6 @@ public sealed class DnsTextResource : DnsStringResource protected override bool CanUseCompression => false; /// - public override string ToString() => '"' + string.Join("\", \"", Entries) + '"'; + public override string ToString() => '"' + string.Join("\", \"", Entries.ToArray()) + '"'; } } diff --git a/src/Ae.Dns.Protocol/Records/ServiceBinding/SvcStringParameter.cs b/src/Ae.Dns.Protocol/Records/ServiceBinding/SvcStringParameter.cs index e593ec9..74ee664 100644 --- a/src/Ae.Dns.Protocol/Records/ServiceBinding/SvcStringParameter.cs +++ b/src/Ae.Dns.Protocol/Records/ServiceBinding/SvcStringParameter.cs @@ -49,6 +49,6 @@ public void WriteBytes(Memory bytes, ref int offset) } /// - public override string ToString() => Entries.ToString(); + public override string ToString() => Entries; } } diff --git a/tests/Ae.Dns.Tests/Client/ClientTestExtensions.cs b/tests/Ae.Dns.Tests/Client/ClientTestExtensions.cs index 12d472a..4f128fd 100644 --- a/tests/Ae.Dns.Tests/Client/ClientTestExtensions.cs +++ b/tests/Ae.Dns.Tests/Client/ClientTestExtensions.cs @@ -19,7 +19,7 @@ public static async Task RunQuery(this IDnsClient client, string host, DnsQueryT var query = DnsQueryFactory.CreateQuery(host, queryType); var answer = await retry.Query(query, tokenSource.Token); - Assert.Equal(host, answer.Header.Host.ToString()); + Assert.Equal(host, answer.Header.Host); Assert.Equal(query.Header.Id, answer.Header.Id); Assert.Equal(expectedResponseCode, answer.Header.ResponseCode); diff --git a/tests/Ae.Dns.Tests/Client/DnsCachingClientTests.cs b/tests/Ae.Dns.Tests/Client/DnsCachingClientTests.cs index c77d88a..24fd58f 100644 --- a/tests/Ae.Dns.Tests/Client/DnsCachingClientTests.cs +++ b/tests/Ae.Dns.Tests/Client/DnsCachingClientTests.cs @@ -35,7 +35,7 @@ public async Task TestCacheEntryWithOnlyAdditionalRecords() // This is an unrealistic example new DnsResourceRecord { - Host = new DnsLabels("example.com"), + Host = "example.com", Type = DnsQueryType.A, Resource = new DnsIpAddressResource{IPAddress = IPAddress.Loopback}, TimeToLive = 5 diff --git a/tests/Ae.Dns.Tests/Protocol/DnsAnswerTests.cs b/tests/Ae.Dns.Tests/Protocol/DnsAnswerTests.cs index 5d657ab..ad82a6d 100644 --- a/tests/Ae.Dns.Tests/Protocol/DnsAnswerTests.cs +++ b/tests/Ae.Dns.Tests/Protocol/DnsAnswerTests.cs @@ -21,7 +21,7 @@ public void ReadAnswer1() Assert.Equal(DnsQueryClass.IN, message.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, message.Header.QueryType); - Assert.Equal("1.0.0.127.in-addr.arpa", message.Header.Host.ToString()); + Assert.Equal("1.0.0.127.in-addr.arpa", message.Header.Host); Assert.Equal(0, message.Header.AnswerRecordCount); Assert.Equal(0, message.Header.AdditionalRecordCount); Assert.Equal(1, message.Header.QuestionCount); @@ -33,11 +33,11 @@ public void ReadAnswer1() var record = message.Nameservers.Single(); Assert.Equal(DnsQueryType.SOA, record.Type); Assert.Equal(DnsQueryClass.IN, record.Class); - Assert.Equal("in-addr.arpa", record.Host.ToString()); + Assert.Equal("in-addr.arpa", record.Host); var soaData = (DnsSoaResource)record.Resource; - Assert.Equal("b.in-addr-servers.arpa", soaData.MName.ToString()); - Assert.Equal("nstld.iana.org", soaData.RName.ToString()); + Assert.Equal("b.in-addr-servers.arpa", soaData.MName); + Assert.Equal("nstld.iana.org", soaData.RName); Assert.Equal((uint)TimeSpan.Parse("00:36:32").TotalSeconds, record.TimeToLive); } @@ -48,7 +48,7 @@ public void ReadAnswer2() Assert.Equal(DnsQueryClass.IN, message.Header.QueryClass); Assert.Equal(DnsQueryType.A, message.Header.QueryType); - Assert.Equal("alanedwardes-my.sharepoint.com", message.Header.Host.ToString()); + Assert.Equal("alanedwardes-my.sharepoint.com", message.Header.Host); Assert.Equal(7, message.Header.AnswerRecordCount); Assert.Equal(0, message.Header.AdditionalRecordCount); Assert.Equal(1, message.Header.QuestionCount); @@ -61,48 +61,48 @@ public void ReadAnswer2() var record1 = message.Answers[0]; Assert.Equal(DnsQueryType.CNAME, record1.Type); Assert.Equal(DnsQueryClass.IN, record1.Class); - Assert.Equal("alanedwardes-my.sharepoint.com", record1.Host.ToString()); + Assert.Equal("alanedwardes-my.sharepoint.com", record1.Host); Assert.Equal((uint)TimeSpan.Parse("01:00:00").TotalSeconds, record1.TimeToLive); Assert.Equal("alanedwardes.sharepoint.com", ((DnsDomainResource)record1.Resource).Domain); var record2 = message.Answers[1]; Assert.Equal(DnsQueryType.CNAME, record2.Type); Assert.Equal(DnsQueryClass.IN, record2.Class); - Assert.Equal("alanedwardes.sharepoint.com", record2.Host.ToString()); + Assert.Equal("alanedwardes.sharepoint.com", record2.Host); Assert.Equal((uint)TimeSpan.Parse("01:00:00").TotalSeconds, record2.TimeToLive); Assert.Equal("302-ipv4e.clump.dprodmgd104.aa-rt.sharepoint.com", ((DnsDomainResource)record2.Resource).Domain); var record3 = message.Answers[2]; Assert.Equal(DnsQueryType.CNAME, record3.Type); Assert.Equal(DnsQueryClass.IN, record3.Class); - Assert.Equal("302-ipv4e.clump.dprodmgd104.aa-rt.sharepoint.com", record3.Host.ToString()); + Assert.Equal("302-ipv4e.clump.dprodmgd104.aa-rt.sharepoint.com", record3.Host); Assert.Equal((uint)TimeSpan.Parse("00:00:30").TotalSeconds, record3.TimeToLive); Assert.Equal("187170-ipv4e.farm.dprodmgd104.aa-rt.sharepoint.com", ((DnsDomainResource)record3.Resource).Domain); var record4 = message.Answers[3]; Assert.Equal(DnsQueryType.CNAME, record4.Type); Assert.Equal(DnsQueryClass.IN, record4.Class); - Assert.Equal("187170-ipv4e.farm.dprodmgd104.aa-rt.sharepoint.com", record4.Host.ToString()); + Assert.Equal("187170-ipv4e.farm.dprodmgd104.aa-rt.sharepoint.com", record4.Host); Assert.Equal((uint)TimeSpan.Parse("00:01:00").TotalSeconds, record4.TimeToLive); Assert.Equal("187170-ipv4e.farm.dprodmgd104.sharepointonline.com.akadns.net", ((DnsDomainResource)record4.Resource).Domain); var record5 = message.Answers[4]; Assert.Equal(DnsQueryType.CNAME, record5.Type); Assert.Equal(DnsQueryClass.IN, record5.Class); - Assert.Equal("187170-ipv4e.farm.dprodmgd104.sharepointonline.com.akadns.net", record5.Host.ToString()); + Assert.Equal("187170-ipv4e.farm.dprodmgd104.sharepointonline.com.akadns.net", record5.Host); Assert.Equal((uint)TimeSpan.Parse("00:05:00").TotalSeconds, record5.TimeToLive); Assert.Equal("187170-ipv4.farm.dprodmgd104.aa-rt.sharepoint.com.spo-0004.spo-msedge.net", ((DnsDomainResource)record5.Resource).Domain); var record6 = message.Answers[5]; Assert.Equal(DnsQueryType.CNAME, record6.Type); Assert.Equal(DnsQueryClass.IN, record6.Class); - Assert.Equal("187170-ipv4.farm.dprodmgd104.aa-rt.sharepoint.com.spo-0004.spo-msedge.net", record6.Host.ToString()); + Assert.Equal("187170-ipv4.farm.dprodmgd104.aa-rt.sharepoint.com.spo-0004.spo-msedge.net", record6.Host); Assert.Equal((uint)TimeSpan.Parse("00:04:00").TotalSeconds, record6.TimeToLive); var record7 = message.Answers[6]; Assert.Equal(DnsQueryType.A, record7.Type); Assert.Equal(DnsQueryClass.IN, record7.Class); - Assert.Equal("spo-0004.spo-msedge.net", record7.Host.ToString()); + Assert.Equal("spo-0004.spo-msedge.net", record7.Host); Assert.Equal(IPAddress.Parse("13.107.136.9"), ((DnsIpAddressResource)record7.Resource).IPAddress); Assert.Equal((uint)TimeSpan.Parse("00:04:00").TotalSeconds, record7.TimeToLive); } @@ -124,7 +124,7 @@ public void ReadAnswer3() var record = Assert.Single(message.Answers); Assert.Equal(DnsQueryType.A, record.Type); Assert.Equal(DnsQueryClass.IN, record.Class); - Assert.Equal("google.com", record.Host.ToString()); + Assert.Equal("google.com", record.Host); Assert.Equal(IPAddress.Parse("216.58.210.206"), ((DnsIpAddressResource)record.Resource).IPAddress); Assert.Equal((uint)TimeSpan.Parse("00:04:28").TotalSeconds, record.TimeToLive); } @@ -147,7 +147,7 @@ public void ReadAnswer4() var record1 = message.Answers[0]; Assert.Equal(DnsQueryType.CNAME, record1.Type); Assert.Equal(DnsQueryClass.IN, record1.Class); - Assert.Equal("alanedwardes.testing.alanedwardes.com", record1.Host.ToString()); + Assert.Equal("alanedwardes.testing.alanedwardes.com", record1.Host); Assert.Equal("alanedwardes.com", ((DnsDomainResource)record1.Resource).Domain); Assert.Equal((uint)TimeSpan.Parse("00:05:00").TotalSeconds, record1.TimeToLive); @@ -160,21 +160,21 @@ public void ReadAnswer4() var record3 = message.Answers[2]; Assert.Equal(DnsQueryType.A, record3.Type); Assert.Equal(DnsQueryClass.IN, record3.Class); - Assert.Equal("alanedwardes.com", record3.Host.ToString()); + Assert.Equal("alanedwardes.com", record3.Host); Assert.Equal(IPAddress.Parse("143.204.191.37"), ((DnsIpAddressResource)record3.Resource).IPAddress); Assert.Equal((uint)TimeSpan.Parse("00:01:00").TotalSeconds, record3.TimeToLive); var record4 = message.Answers[3]; Assert.Equal(DnsQueryType.A, record4.Type); Assert.Equal(DnsQueryClass.IN, record4.Class); - Assert.Equal("alanedwardes.com", record4.Host.ToString()); + Assert.Equal("alanedwardes.com", record4.Host); Assert.Equal(IPAddress.Parse("143.204.191.71"), ((DnsIpAddressResource)record4.Resource).IPAddress); Assert.Equal((uint)TimeSpan.Parse("00:01:00").TotalSeconds, record4.TimeToLive); var record5 = message.Answers[4]; Assert.Equal(DnsQueryType.A, record5.Type); Assert.Equal(DnsQueryClass.IN, record5.Class); - Assert.Equal("alanedwardes.com", record5.Host.ToString()); + Assert.Equal("alanedwardes.com", record5.Host); Assert.Equal(IPAddress.Parse("143.204.191.110"), ((DnsIpAddressResource)record5.Resource).IPAddress); Assert.Equal((uint)TimeSpan.Parse("00:01:00").TotalSeconds, record5.TimeToLive); } @@ -197,7 +197,7 @@ public void ReadAnswer10() var record1 = message.Answers[0]; Assert.Equal(DnsQueryType.TEXT, record1.Type); Assert.Equal(DnsQueryClass.IN, record1.Class); - Assert.Equal("_spf.mailgun.org", record1.Host.ToString()); + Assert.Equal("_spf.mailgun.org", record1.Host); var entries = ((DnsTextResource)record1.Resource).Entries; Assert.Equal(2, entries.Count); @@ -224,28 +224,28 @@ public void ReadAnswer11() var record1 = message.Answers[0]; Assert.Equal(DnsQueryType.NS, record1.Type); Assert.Equal(DnsQueryClass.IN, record1.Class); - Assert.Equal("google.com", record1.Host.ToString()); + Assert.Equal("google.com", record1.Host); Assert.Equal("ns4.google.com", ((DnsDomainResource)record1.Resource).Domain); Assert.Equal(21242u, record1.TimeToLive); var record2 = message.Answers[1]; Assert.Equal(DnsQueryType.NS, record2.Type); Assert.Equal(DnsQueryClass.IN, record2.Class); - Assert.Equal("google.com", record2.Host.ToString()); + Assert.Equal("google.com", record2.Host); Assert.Equal("ns3.google.com", ((DnsDomainResource)record2.Resource).Domain); Assert.Equal(21242u, record2.TimeToLive); var record3 = message.Answers[2]; Assert.Equal(DnsQueryType.NS, record3.Type); Assert.Equal(DnsQueryClass.IN, record3.Class); - Assert.Equal("google.com", record3.Host.ToString()); + Assert.Equal("google.com", record3.Host); Assert.Equal("ns1.google.com", ((DnsDomainResource)record3.Resource).Domain); Assert.Equal(21242u, record3.TimeToLive); var record4 = message.Answers[3]; Assert.Equal(DnsQueryType.NS, record4.Type); Assert.Equal(DnsQueryClass.IN, record4.Class); - Assert.Equal("google.com", record4.Host.ToString()); + Assert.Equal("google.com", record4.Host); Assert.Equal("ns2.google.com", ((DnsDomainResource)record4.Resource).Domain); Assert.Equal(21242u, record4.TimeToLive); } diff --git a/tests/Ae.Dns.Tests/Protocol/DnsDelegatingHandlerTests.cs b/tests/Ae.Dns.Tests/Protocol/DnsDelegatingHandlerTests.cs index 466ee86..d6f8fcd 100644 --- a/tests/Ae.Dns.Tests/Protocol/DnsDelegatingHandlerTests.cs +++ b/tests/Ae.Dns.Tests/Protocol/DnsDelegatingHandlerTests.cs @@ -23,7 +23,7 @@ public async Task TestDelegatingHandler(bool isIpv4, DnsQueryType dnsQueryType, var dnsHandler = new DnsDelegatingHandler(dnsClient.Object, isIpv4) { InnerHandler = mockHandler.Object }; var httpClient = new HttpClient(dnsHandler); - dnsClient.Setup(x => x.Query(It.Is(x => x.Header.Host.ToString() == "www.google.com" && x.Header.QueryType == dnsQueryType), It.IsAny())) + dnsClient.Setup(x => x.Query(It.Is(x => x.Header.Host == "www.google.com" && x.Header.QueryType == dnsQueryType), It.IsAny())) .ReturnsAsync(new DnsMessage { Answers = new List diff --git a/tests/Ae.Dns.Tests/Protocol/DnsLabelsTests.cs b/tests/Ae.Dns.Tests/Protocol/DnsLabelsTests.cs index 2575d83..4e4be68 100644 --- a/tests/Ae.Dns.Tests/Protocol/DnsLabelsTests.cs +++ b/tests/Ae.Dns.Tests/Protocol/DnsLabelsTests.cs @@ -29,7 +29,7 @@ public void TestFromArray() [Fact] public void TestFromString() { - var labels = new DnsLabels("one.two.three"); + DnsLabels labels = "one.two.three"; Assert.Equal(new[] { "one", "two", "three" }, labels); } diff --git a/tests/Ae.Dns.Tests/Protocol/DnsQueryFactoryTests.cs b/tests/Ae.Dns.Tests/Protocol/DnsQueryFactoryTests.cs index a434f6b..573e3c2 100644 --- a/tests/Ae.Dns.Tests/Protocol/DnsQueryFactoryTests.cs +++ b/tests/Ae.Dns.Tests/Protocol/DnsQueryFactoryTests.cs @@ -22,7 +22,7 @@ public void TestCreateQuery() { var header = DnsQueryFactory.CreateQuery("example.com", DnsQueryType.CNAME); - Assert.Equal("example.com", header.Header.Host.ToString()); + Assert.Equal("example.com", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.CNAME, header.Header.QueryType); @@ -36,7 +36,7 @@ public void TestCreateReverseQueryIPv4() { var header = DnsQueryFactory.CreateReverseQuery(IPAddress.Parse("1.2.3.4")); - Assert.Equal("4.3.2.1.in-addr.arpa", header.Header.Host.ToString()); + Assert.Equal("4.3.2.1.in-addr.arpa", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, header.Header.QueryType); @@ -50,7 +50,7 @@ public void TestCreateReverseQueryIPv6_Example1() { var header = DnsQueryFactory.CreateReverseQuery(IPAddress.Parse("2600:9000:2015:3600:1a:36dc:e5c0:93a1")); - Assert.Equal("1.a.3.9.0.c.5.e.c.d.6.3.a.1.0.0.0.0.6.3.5.1.0.2.0.0.0.9.0.0.6.2.ip6.arpa", header.Header.Host.ToString()); + Assert.Equal("1.a.3.9.0.c.5.e.c.d.6.3.a.1.0.0.0.0.6.3.5.1.0.2.0.0.0.9.0.0.6.2.ip6.arpa", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, header.Header.QueryType); @@ -64,7 +64,7 @@ public void TestCreateReverseQueryIPv6_Example2() { var header = DnsQueryFactory.CreateReverseQuery(IPAddress.Parse("2a02:2e0:3fe:1001:302::")); - Assert.Equal("0.0.0.0.0.0.0.0.0.0.0.0.2.0.3.0.1.0.0.1.e.f.3.0.0.e.2.0.2.0.a.2.ip6.arpa", header.Header.Host.ToString()); + Assert.Equal("0.0.0.0.0.0.0.0.0.0.0.0.2.0.3.0.1.0.0.1.e.f.3.0.0.e.2.0.2.0.a.2.ip6.arpa", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, header.Header.QueryType); @@ -78,7 +78,7 @@ public void TestCreateReverseQueryIPv6_Example3() { var header = DnsQueryFactory.CreateReverseQuery(IPAddress.Parse("2a00:1450:4009:815::200e")); - Assert.Equal("e.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.5.1.8.0.9.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa", header.Header.Host.ToString()); + Assert.Equal("e.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.5.1.8.0.9.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, header.Header.QueryType); @@ -92,7 +92,7 @@ public void TestCreateReverseQueryIPv6_Example4() { var header = DnsQueryFactory.CreateReverseQuery(IPAddress.Parse("2620:149:af0::10")); - Assert.Equal("0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.a.0.9.4.1.0.0.2.6.2.ip6.arpa", header.Header.Host.ToString()); + Assert.Equal("0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.a.0.9.4.1.0.0.2.6.2.ip6.arpa", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, header.Header.QueryType); @@ -106,7 +106,7 @@ public void TestCreateReverseQueryIPv6_Example5() { var header = DnsQueryFactory.CreateReverseQuery(IPAddress.Parse("2a02:26f0:fd00:11a8::1ea2")); - Assert.Equal("2.a.e.1.0.0.0.0.0.0.0.0.0.0.0.0.8.a.1.1.0.0.d.f.0.f.6.2.2.0.a.2.ip6.arpa", header.Header.Host.ToString()); + Assert.Equal("2.a.e.1.0.0.0.0.0.0.0.0.0.0.0.0.8.a.1.1.0.0.d.f.0.f.6.2.2.0.a.2.ip6.arpa", header.Header.Host); Assert.True(header.Header.Id > 0); Assert.Equal(DnsQueryClass.IN, header.Header.QueryClass); Assert.Equal(DnsQueryType.PTR, header.Header.QueryType); diff --git a/tests/Ae.Dns.Tests/Protocol/DnsQueryTests.cs b/tests/Ae.Dns.Tests/Protocol/DnsQueryTests.cs index d806092..6d83819 100644 --- a/tests/Ae.Dns.Tests/Protocol/DnsQueryTests.cs +++ b/tests/Ae.Dns.Tests/Protocol/DnsQueryTests.cs @@ -17,7 +17,7 @@ public void ReadQuery1Packet() Assert.Equal(DnsQueryClass.IN, header.QueryClass); Assert.Equal(DnsQueryType.A, header.QueryType); - Assert.Equal("cognito-identity.us-east-1.amazonaws.com", header.Host.ToString()); + Assert.Equal("cognito-identity.us-east-1.amazonaws.com", header.Host); Assert.Equal(0, header.AnswerRecordCount); Assert.Equal(0, header.AdditionalRecordCount); Assert.Equal(1, header.QuestionCount); @@ -50,7 +50,7 @@ public void ReadQuery2Packet() Assert.Equal(DnsQueryClass.IN, header.QueryClass); Assert.Equal(DnsQueryType.A, header.QueryType); - Assert.Equal("polling.bbc.co.uk", header.Host.ToString()); + Assert.Equal("polling.bbc.co.uk", header.Host); Assert.Equal(0, header.AnswerRecordCount); Assert.Equal(0, header.AdditionalRecordCount); Assert.Equal(1, header.QuestionCount); @@ -64,7 +64,7 @@ public void ReadQuery3Packet() Assert.Equal(DnsQueryClass.IN, header.QueryClass); Assert.Equal(DnsQueryType.A, header.QueryType); - Assert.Equal("outlook.office365.com", header.Host.ToString()); + Assert.Equal("outlook.office365.com", header.Host); Assert.Equal(0, header.AnswerRecordCount); Assert.Equal(0, header.AdditionalRecordCount); Assert.Equal(1, header.QuestionCount); @@ -78,7 +78,7 @@ public void ReadQuery4Packet() Assert.Equal(DnsQueryClass.IN, header.QueryClass); Assert.Equal(DnsQueryType.AAAA, header.QueryType); - Assert.Equal("h3.shared.global.fastly.net", header.Host.ToString()); + Assert.Equal("h3.shared.global.fastly.net", header.Host); Assert.Equal(0, header.AnswerRecordCount); Assert.Equal(0, header.AdditionalRecordCount); Assert.Equal(1, header.QuestionCount); @@ -92,7 +92,7 @@ public void ReadQuery5Packet() Assert.Equal(DnsQueryClass.IN, header.QueryClass); Assert.Equal(DnsQueryType.A, header.QueryType); - Assert.Equal("roaming.officeapps.live.com", header.Host.ToString()); + Assert.Equal("roaming.officeapps.live.com", header.Host); Assert.Equal(0, header.AnswerRecordCount); Assert.Equal(0, header.AdditionalRecordCount); Assert.Equal(1, header.QuestionCount);