t/10-vidns.t
changeset 15 aa1598910bb0
parent 10 efba68ef7f89
equal deleted inserted replaced
14:0f37544f1b98 15:aa1598910bb0
     3 use Test::More;
     3 use Test::More;
     4 use strict;
     4 use strict;
     5 use warnings;
     5 use warnings;
     6 
     6 
     7 use_ok 'DNS::Vi' or BAIL_OUT 'DNS::Vi not found!';
     7 use_ok 'DNS::Vi' or BAIL_OUT 'DNS::Vi not found!';
     8 can_ok 'DNS::Vi', qw(ttl2h h2ttl parse nice delta);
     8 can_ok 'DNS::Vi', qw(ttl2h h2ttl parse nice delta edit update show);
     9 
     9 
    10 # TODO: more tests!
    10 # TODO: more tests!
    11 is ttl2h(86400), '1d',  '-> 1d';
    11 is ttl2h(86400), '1d',  '-> 1d';
    12 is h2ttl('1d'),  86400, '<- 1d';
    12 is h2ttl('1d'),  86400, '<- 1d';
    13 
    13 
    14 my $data = do {
    14 my $data1 = do {
    15     local $/    = undef;
    15     local $/    = undef;
    16     local @ARGV = 't/samples/kugelbus-axfr';
    16     local @ARGV = 't/samples/kugelbus-axfr';
    17     <>;
    17     <>;
    18 };
    18 };
    19 
    19 
    20 my @zone1 = parse($data);
    20 # check parser with and without skip list
    21 is @zone1, 64 => '64 rrsets';
    21 is parse($data1), 64 => '64 rrsets';
       
    22 my @zone1 =
       
    23   parse($data1, { -skip => [qw(RRSIG NSEC3 NSEC3PARAM NSEC DNSKEY TSIG)] });
       
    24 is @zone1, 18 => '18 rrsets';
    22 
    25 
    23 $data =~ s{^kugelbus.*?IN\s+MX.*?$}{}m;
    26 subtest 'parsed data' => sub {
    24 $data .= <<_;
    27     my ($soa) =
    25 foo 1h	txt "foo"
    28       map { $_->{rrset} } grep { $_->{rrset}{rrtype} eq 'SOA' } @zone1;
    26     30m	A   1.1.1.1
    29     is ref $soa, 'HASH' => 'got result hash';
    27 _
    30     is $soa->{rrtype}, 'SOA' => 'is SOA';
    28 my @zone2 = parse($data);
    31     is $soa->{data},
    29 is @zone2, 65, => '65 rrsets';
    32         'pu.schlittermann.de. '
       
    33       . 'hostmaster.net.schlittermann.de. '
       
    34       . '18 86400 7200 604800 86400' => 'has expected data';
    30 
    35 
    31 my ($add, $del) = delta(\@zone1, \@zone2);
    36     my @txt = map { $_->{rrset} } grep { $_->{rrset}{rrtype} eq 'TXT' } @zone1;
    32 is @$add, 2 => '2 sets to add';
    37     is @txt, 3 => 'got 3 txt records';
    33 is @$del, 1 => '1 set to delete';
    38 };
    34 
    39 
    35 is_deeply $add,
    40 # delta should find noting
    36   ['foo.kugelbus.de. 1800 A 1.1.1.1', 'foo.kugelbus.de. 3600 TXT "foo"'] =>
    41 subtest 'delta' => sub { 
    37   'added datasets';
    42     my ($add, $del) = delta(\@zone1, \@zone1);
    38 is_deeply $del,
    43     is @$add, 0 => 'nothing added';
    39   ['kugelbus.de. 86400 MX 10 ssl.schlittermann.de.'] => 'removed datasets';
    44     is @$del, 0 => 'nothing deleted';
       
    45 };
    40 
    46 
    41 done_testing();
    47 done_testing();