public void ReadResourceWithPreviousEscapedDomain() { var text = @" emanon\126.org A 127.0.0.1 AAAA ::1 "; var reader = new PresentationReader(new StringReader(text)); var a = reader.ReadResourceRecord(); Assert.AreEqual("emanon~.org", a.Name); Assert.AreEqual(DnsClass.IN, a.Class); Assert.AreEqual(DnsType.A, a.Type); Assert.AreEqual(ResourceRecord.DefaultTTL, a.TTL); Assert.IsInstanceOfType(a, typeof(ARecord)); Assert.AreEqual(2, a.Name.Labels.Count); var aaaa = reader.ReadResourceRecord(); Assert.AreEqual("emanon~.org", aaaa.Name); Assert.AreEqual(DnsClass.IN, aaaa.Class); Assert.AreEqual(DnsType.AAAA, aaaa.Type); Assert.AreEqual(ResourceRecord.DefaultTTL, aaaa.TTL); Assert.IsInstanceOfType(aaaa, typeof(AAAARecord)); Assert.AreEqual(2, a.Name.Labels.Count); }
public void ReadResourceWithUnknownType() { var reader = new PresentationReader(new StringReader("me CH TYPE1234 \\# 0")); var resource = reader.ReadResourceRecord(); Assert.AreEqual("me", resource.Name); Assert.AreEqual(DnsClass.CH, resource.Class); Assert.AreEqual(1234, (int)resource.Type); Assert.IsInstanceOfType(resource, typeof(UnknownRecord)); }
public void ReadResourceWithUnknownClass() { var reader = new PresentationReader(new StringReader("me CLASS1234 A 127.0.0.1")); var resource = reader.ReadResourceRecord(); Assert.AreEqual("me", resource.Name); Assert.AreEqual(1234, (int)resource.Class); Assert.AreEqual(DnsType.A, resource.Type); Assert.IsInstanceOfType(resource, typeof(ARecord)); }
public void ReadResourceWithClassAndTTL() { var reader = new PresentationReader(new StringReader("me CH 63 A 127.0.0.1")); var resource = reader.ReadResourceRecord(); Assert.AreEqual("me", resource.Name); Assert.AreEqual(DnsClass.CH, resource.Class); Assert.AreEqual(DnsType.A, resource.Type); Assert.AreEqual(TimeSpan.FromSeconds(63), resource.TTL); Assert.IsInstanceOfType(resource, typeof(ARecord)); }
public void ReadResourceWithNameOfClass() { var reader = new PresentationReader(new StringReader("CH A 127.0.0.1")); var resource = reader.ReadResourceRecord(); Assert.AreEqual("CH", resource.Name); Assert.AreEqual(DnsClass.IN, resource.Class); Assert.AreEqual(DnsType.A, resource.Type); Assert.AreEqual(ResourceRecord.DefaultTTL, resource.TTL); Assert.IsInstanceOfType(resource, typeof(ARecord)); }
public void ReadResourceWithTTL() { var text = @" $TTL 120 ; 2 minutes\r\n emanon.org PTR localhost "; var reader = new PresentationReader(new StringReader(text)); var resource = reader.ReadResourceRecord(); Assert.AreEqual("emanon.org", resource.Name); Assert.AreEqual(DnsClass.IN, resource.Class); Assert.AreEqual(DnsType.PTR, resource.Type); Assert.AreEqual(TimeSpan.FromMinutes(2), resource.TTL); Assert.IsInstanceOfType(resource, typeof(PTRRecord)); }
public void ReadResourceWithOrigin() { var text = @" $ORIGIN emanon.org. ; no such place\r\n @ PTR localhost "; var reader = new PresentationReader(new StringReader(text)); var resource = reader.ReadResourceRecord(); Assert.AreEqual("emanon.org", resource.Name); Assert.AreEqual(DnsClass.IN, resource.Class); Assert.AreEqual(DnsType.PTR, resource.Type); Assert.AreEqual(ResourceRecord.DefaultTTL, resource.TTL); Assert.IsInstanceOfType(resource, typeof(PTRRecord)); }
public void ReadZoneFile() { var text = @" $ORIGIN example.com. ; designates the start of this zone file in the namespace $TTL 3600 ; default expiration time of all resource records without their own TTL value ; example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h ) example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 1 2 4 1 ) example.com. IN NS ns ; ns.example.com is a nameserver for example.com example.com. IN NS ns.somewhere.example. ; ns.somewhere.example is a backup nameserver for example.com example.com. IN MX 10 mail.example.com. ; mail.example.com is the mailserver for example.com @ IN MX 20 mail2.example.com. ; equivalent to above line, '@' represents zone origin @ IN MX 50 mail3 ; equivalent to above line, but using a relative host name example.com. IN A 192.0.2.1 ; IPv4 address for example.com IN AAAA 2001:db8:10::1 ; IPv6 address for example.com ns IN A 192.0.2.2 ; IPv4 address for ns.example.com IN AAAA 2001:db8:10::2 ; IPv6 address for ns.example.com www IN CNAME example.com. ; www.example.com is an alias for example.com wwwtest IN CNAME www ; wwwtest.example.com is another alias for www.example.com mail IN A 192.0.2.3 ; IPv4 address for mail.example.com mail IN A 192.0.2.3 ; IPv4 address for mail.example.com mail2 IN A 192.0.2.4 ; IPv4 address for mail2.example.com mail3 IN A 192.0.2.5 ; IPv4 address for mail3.example.com "; var reader = new PresentationReader(new StringReader(text)); var resources = new List <ResourceRecord>(); while (true) { var r = reader.ReadResourceRecord(); if (r == null) { break; } resources.Add(r); } Assert.AreEqual(15, resources.Count); }
public void ReadResourceMissingName() { var reader = new PresentationReader(new StringReader(" NS ns1")); ExceptionAssert.Throws <InvalidDataException>(() => reader.ReadResourceRecord()); }
/// <inheritdoc /> public ResourceRecord Read(PresentationReader reader) { return(reader.ReadResourceRecord()); }