t/10-dnsvi.t
branchdeb
changeset 35 ed607ee103aa
parent 33 7d0fac2ec585
child 56 f5b2f3282e7d
equal deleted inserted replaced
34:f26320a06055 35:ed607ee103aa
       
     1 #! perl
       
     2 
       
     3 use 5.010;
       
     4 use Test::More;
       
     5 use strict;
       
     6 use warnings;
       
     7 use File::Basename;
       
     8 
       
     9 use_ok 'DNS::Vi' or BAIL_OUT 'DNS::Vi not found!';
       
    10 can_ok 'DNS::Vi', qw(ttl2h h2ttl parse nice delta edit update show);
       
    11 
       
    12 # TODO: more tests!
       
    13 is ttl2h(86400), '1d',  '-> 1d';
       
    14 is h2ttl('1d'),  86400, '<- 1d';
       
    15 
       
    16 sub slurp {
       
    17     local $/ = undef;
       
    18     open(my $x, '<', shift);
       
    19     return <$x>;
       
    20 }
       
    21 
       
    22 # the results must match the t/samples/? files
       
    23 my %result = (
       
    24     axfr => {
       
    25         RRSETS => 64,
       
    26         SOA    => 1,
       
    27         NS     => 2,
       
    28         A      => 6,
       
    29         TXT    => 3,
       
    30         AAAA   => 1,
       
    31         MX     => 5,
       
    32     },
       
    33     a => {
       
    34         RRSETS => 32,
       
    35         SOA    => 1,
       
    36         NS     => 16,
       
    37         A      => 9,
       
    38         TXT    => 4,
       
    39         AAAA   => 0,
       
    40         MX     => 0,
       
    41     },
       
    42     b => {
       
    43         RRSETS => 7,
       
    44         SOA    => 1,
       
    45         NS     => 2,
       
    46         A      => 1,
       
    47         TXT    => 3,
       
    48         AAAA   => 0,
       
    49         MX     => 0,
       
    50     },
       
    51     c => {
       
    52         RRSETS => 12,
       
    53         SOA    => 1,
       
    54         NS     => 2,
       
    55         A      => 2,
       
    56         TXT    => 5,
       
    57         AAAA   => 0,
       
    58         MX     => 2,
       
    59     },
       
    60 );
       
    61 
       
    62 # uniq list of rrtypes we want to test
       
    63 my @sets = do {
       
    64     my %h;
       
    65     @h{ map { keys %{$_} } values %result } = ();
       
    66     grep { $_ ne 'RRSETS' } sort keys %h;
       
    67 };
       
    68 
       
    69 foreach my $sample (sort keys %result) {
       
    70     my $file = "t/samples/$sample";
       
    71 
       
    72     subtest "sample $file" => sub {
       
    73         my %result = %{ $result{$sample} };
       
    74         my @zone   = parse(slurp $file);
       
    75         is @zone, $result{RRSETS} => "$sample: $result{RRSETS} RRSETS";
       
    76         foreach my $type (@sets) {
       
    77             is grep({ $_->{rrset}{rrtype} eq $type } @zone),
       
    78               $result{$type} => "$sample: $result{$type} $type";
       
    79         }
       
    80 
       
    81         my ($added, $deleted) = delta(\@zone, \@zone);
       
    82         is @$added,   0 => 'nothing added';
       
    83         is @$deleted, 0 => 'nothing deleted';
       
    84       }
       
    85 }
       
    86 
       
    87 done_testing();