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(); |