summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorMattias Päivärinta <mattias.paivarinta@iis.se>2017-09-27 15:12:05 +0200
committerMattias Päivärinta <mattias.paivarinta@iis.se>2017-09-29 10:20:47 +0200
commit2cb6a5dc8bf5aa81b68197e888020a30a075d9c5 (patch)
tree13aa872795daaff66ccc37509a1f67217b5ea215 /t
parentf2d7114773558ebbb1e5521d9f8c1a2d62fc6ef4 (diff)
Fix #16: Test wireformat roundtrips for RRs
Diffstat (limited to 't')
-rw-r--r--t/wireformat.t67
1 files changed, 67 insertions, 0 deletions
diff --git a/t/wireformat.t b/t/wireformat.t
new file mode 100644
index 0000000..78db819
--- /dev/null
+++ b/t/wireformat.t
@@ -0,0 +1,67 @@
+use 5.14.0;
+use strict;
+use warnings;
+
+use Test::More;
+
+BEGIN { use_ok('Zonemaster::LDNS') }
+
+
+=head2 wireformat_ok( string )
+
+Test that the given resource record stays the same when serialized and deserialized
+through wireformat using Zonemaster::LDNS::Packet::wireformat() and
+Zonemaster::LDNS::Packet::new_from_wireformat().
+
+The initial resource record is constructed from the given B<string> using
+Zonemaster::LDNS::RR::new().
+
+=cut
+
+sub wireformat_ok {
+ my $string = shift;
+
+ my $rr1 = Zonemaster::LDNS::RR->new($string);
+
+ my $packet1 = Zonemaster::LDNS::Packet->new('example.com.');
+ $packet1->unique_push( 'answer', $rr1 );
+
+ my $wireformat = $packet1->wireformat();
+
+ my $packet2 = Zonemaster::LDNS::Packet->new_from_wireformat($wireformat);
+ my $rr2 = ( $packet2->answer )[0];
+
+ cmp_ok $rr1, 'eq', $rr2, "Wireformat round-trip for: " . $string;
+ return;
+}
+
+# Test wireformat round trips for different record types
+wireformat_ok('example.com. A 192.0.2.1');
+wireformat_ok('example.com. AAAA 2001:db8::3');
+wireformat_ok('abc.example.com. AFSDB 1 afs-server.example.com.');
+wireformat_ok('example.com. CAA 0 issue "ca.example.net; account=123456"');
+wireformat_ok('smith CERT PGP 0 0 aNvv4w==');
+wireformat_ok('example.com. CNAME joe.example.com.');
+wireformat_ok('example.com. DNAME example.net.');
+wireformat_ok('example.com. DNSKEY 256 3 5 742iU/TpPSEDhm2SNKLijfUppn1U aNvv4w==');
+wireformat_ok('example. DS 12345 3 1 123456789abcdef67890123456789abcdef67890');
+wireformat_ok('example.com. HINFO PC-Intel-700mhz "Redhat Linux 7.1"');
+wireformat_ok('geo.example.com. LOC 42 21 43.528 N 71 05 06.284 W 12m');
+wireformat_ok('example.com. MX 10 mail.example.com.');
+wireformat_ok('example.com. NAPTR 100 10 u sip+E2U !^.*$!sip:info@info.example.test!i .');
+wireformat_ok('example.com. NS ns1.example.com.');
+wireformat_ok('example.com. NSEC aaa.example.com. NS SOA RRSIG NSEC DNSKEY');
+wireformat_ok('example. NSEC3 1 1 12 aabbccdd 2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG');
+wireformat_ok('example.com. NSEC3PARAM 1 0 1 B606B568');
+wireformat_ok('2.2.0.192.in-addr.arpa. PTR www.example.com.');
+wireformat_ok('my.example.com. RP who.example.com txtrec.example.com');
+wireformat_ok('www.example.com. RRSIG AAAA 5 3 60 20171006161502 20170926161502 25665 example.com. khOgZGrdkaggUfmZbOFjZLXWZsA8 u+Y=');
+wireformat_ok('example.com. SOA ns1.example.com. hostmaster.example.com. 2003080800 172800 900 1209600 3600');
+wireformat_ok('example.com. SPF 10 5 80 hostname.example.com');
+wireformat_ok('_http._tcp.example.com. SRV 0 5 80 www.example.com.');
+wireformat_ok('random.example.com. SSHFP 1 1 23D3C516AAF4C8E867D0A2968B2EB999 B3168216');
+wireformat_ok('example.com. TLSA 3 1 1 d2abde240d7cd3ee6b4b28c54df034b9 7983a1d16e8a410e4561cb106618e971');
+wireformat_ok('example.com. TXT "system manager: jdoe@example.com"');
+wireformat_ok('host.example.com. WKS 192.0.2.3 TCP (ftp smtp telnet)');
+
+done_testing;