Codebase list libnet-dns-resolver-mock-perl / ccfc957
New upstream version 1.20200215 gregor herrmann 4 years ago
9 changed file(s) with 181 addition(s) and 8 deletion(s). Raw diff Collapse all Expand all
0 Revision history for Net::DNS::Resolver::Mock
1
2 1.20200215 2020-02-15 15:07:49+00:00 UTC
3 - Add missing Changelog
4 - Debugging mode with output via STDERR and method
5
6 1.20200214
7 - Add Mocking of Exceptions
8
9 1.20171219
10 - Add CNAME lookups
11 - Bugfix PTR lookups
12
13 1.20171031
14 - Improve tests
15
16 1.20170814
17 - First release
18
0 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.010.
0 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012.
1 Changes
12 LICENSE
23 MANIFEST
34 META.yml
67 dist.ini
78 lib/Net/DNS/Resolver/Mock.pm
89 t/00-load.t
10 t/01-debug.t
911 t/01-test.t
1012 t/author-critic.t
1113 t/author-pod-syntax.t
22 author:
33 - 'Marc Bradshaw <marc@marcbradshaw.net>'
44 build_requires:
5 Test::Exception: '0'
56 Test::More: '0'
67 perl: '5.006'
78 configure_requires:
89 ExtUtils::MakeMaker: '0'
910 dynamic_config: 0
10 generated_by: 'Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150010'
11 generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010'
1112 license: perl
1213 meta-spec:
1314 url: http://module-build.sourceforge.net/META-spec-v1.4.html
2122 base: '0'
2223 strict: '0'
2324 warnings: '0'
24 version: '1.20171219'
25 x_serialization_backend: 'YAML::Tiny version 1.70'
25 version: '1.20200215'
26 x_generated_by_perl: v5.30.1
27 x_serialization_backend: 'YAML::Tiny version 1.73'
0 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.010.
0 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.012.
11 use strict;
22 use warnings;
33
2525 "warnings" => 0
2626 },
2727 "TEST_REQUIRES" => {
28 "Test::Exception" => 0,
2829 "Test::More" => 0
2930 },
30 "VERSION" => "1.20171219",
31 "VERSION" => "1.20200215",
3132 "test" => {
3233 "TESTS" => "t/*.t"
3334 }
3940 "Net::DNS::Question" => 0,
4041 "Net::DNS::Resolver" => 0,
4142 "Net::DNS::ZoneFile" => 0,
43 "Test::Exception" => 0,
4244 "Test::More" => 0,
4345 "base" => 0,
4446 "strict" => 0,
2626
2727 Reads the zone data from the supplied string
2828
29 die_on ( $Name, $Type, $Error )
30
31 Die with $Error for a query of $Name and $Type
32
33 enable_debug ()
34
35 Once set, the resolver will write any lookups received to STDERR and
36 will be available via the following methods
37
38 disble_debug ()
39
40 Disable debugging
41
42 clear_debug ()
43
44 Clear the debugging list
45
46 get_debug ()
47
48 Returns a list of debugging entries
49
2950 DEPENDENCIES
3051
3152 Net::DNS::Resolver
2121 location=build
2222
2323 [OurPkgVersion]
24 [NextRelease]
2425
2526 [PodSyntaxTests]
2627 [Test::Perl::Critic]
22 use strict;
33 use warnings;
44
5 our $VERSION = '1.20171219'; # VERSION
5 our $VERSION = '1.20200215'; # VERSION
66
77 use base 'Net::DNS::Resolver';
88
99 use Net::DNS::Packet;
1010 use Net::DNS::Question;
1111 use Net::DNS::ZoneFile;
12
13 my $die_on = {};
14 {
15 my @_debug_output;
16 sub enable_debug {
17 my ( $self ) = @_;
18 $self->{_mock_debug} = 1;
19 $self->_add_debug( "Net::DNS::Resolver::Mock Debugging enabled" );
20 return;
21 }
22 sub disable_debug {
23 my ( $self ) = @_;
24 $self->clear_debug();
25 delete $self->{_mock_debug};
26 return;
27 }
28 sub _add_debug {
29 my ( $self, $debug ) = @_;
30 push @_debug_output, $debug;
31 warn $debug;
32 return;
33 }
34 sub clear_debug {
35 my ( $self ) = @_;
36 @_debug_output = ();
37 return;
38 }
39 sub get_debug {
40 my ( $self ) = @_;
41 return @_debug_output;
42 }
43 }
44
45 sub die_on {
46 my ( $self, $name, $type, $error ) = @_;
47 $die_on->{ "$name $type" } = $error;
48 return;
49 }
1250
1351 sub zonefile_read {
1452 my ( $self, $zonefile ) = @_;
2462
2563 sub send {
2664 my ( $self, $name, $type ) = @_;
65
66 $self->_add_debug( "DNS Lookup '$name' '$type'" ) if $self->{_mock_debug};
67
68 if ( exists ( $die_on->{ "$name $type" } ) ) {
69 die $die_on->{ "$name $type" };
70 }
2771
2872 $name =~ s/\.$//;
2973
100144
101145 Reads the zone data from the supplied string
102146
147 =item die_on ( $Name, $Type, $Error )
148
149 Die with $Error for a query of $Name and $Type
150
151 =item enable_debug ()
152
153 Once set, the resolver will write any lookups received to STDERR
154 and will be available via the following methods
155
156 =item disble_debug ()
157
158 Disable debugging
159
160 =item clear_debug ()
161
162 Clear the debugging list
163
164 =item get_debug ()
165
166 Returns a list of debugging entries
167
103168 =back
104169
105170 =head1 DEPENDENCIES
0 #!perl
1 use 5.006;
2 use strict;
3 use warnings FATAL => 'all';
4 use Test::More;
5 use Test::Exception;
6
7 use Net::DNS::Resolver::Mock;
8
9 plan tests => 10;
10
11 {
12 my $ZoneData = join( "\n",
13 'example.com 3600 A 1.2.3.4',
14 );
15
16 my $Resolver = Net::DNS::Resolver::Mock->new();
17 $Resolver->zonefile_parse( $ZoneData );
18
19 my $Reply;
20
21 $Reply = $Resolver->query( 'google.com', 'A' );
22 is( defined( $Reply ), '', 'Missing entry returns nothing' );
23
24 my @Debug = $Resolver->get_debug;
25 is_deeply ( \@Debug, [], 'Disabled debugging does not log' );
26
27 $Resolver->enable_debug;
28
29 $Reply = $Resolver->query( 'google.com', 'A' );
30 is( defined( $Reply ), '', 'Missing entry returns nothing' );
31
32 @Debug = $Resolver->get_debug;
33 is_deeply ( \@Debug, [ "Net::DNS::Resolver::Mock Debugging enabled", "DNS Lookup 'google.com' 'A'" ], 'Enabled debugging logs' );
34
35 $Reply = $Resolver->query( 'google.com.au', 'TXT' );
36 is( defined( $Reply ), '', 'Missing entry returns nothing' );
37
38 @Debug = $Resolver->get_debug;
39 is_deeply ( \@Debug, [ "Net::DNS::Resolver::Mock Debugging enabled", "DNS Lookup 'google.com' 'A'", "DNS Lookup 'google.com.au' 'TXT'" ], 'Enabled debugging logs' );
40
41 $Reply = $Resolver->query( 'google.com.au', 'TXT' );
42 is( defined( $Reply ), '', 'Missing entry returns nothing' );
43
44 @Debug = $Resolver->get_debug;
45 is_deeply ( \@Debug, [ "Net::DNS::Resolver::Mock Debugging enabled", "DNS Lookup 'google.com' 'A'", "DNS Lookup 'google.com.au' 'TXT'", "DNS Lookup 'google.com.au' 'TXT'" ], 'Enabled debugging logs' );
46
47 $Resolver->disable_debug;
48
49 $Reply = $Resolver->query( 'google.com', 'A' );
50 is( defined( $Reply ), '', 'Missing entry returns nothing' );
51
52 @Debug = $Resolver->get_debug;
53 is_deeply ( \@Debug, [], 'Disabled debugging does not log' );
54
55 }
56
22 use strict;
33 use warnings FATAL => 'all';
44 use Test::More;
5 use Test::Exception;
56
67 use Net::DNS::Resolver::Mock;
78
8 plan tests => 19;
9 plan tests => 20;
910
1011 {
1112 my $Resolver = Net::DNS::Resolver::Mock->new();
6364 $Reply = $Resolver->query( 'cnameptr.example.com.', 'PTR' );
6465 is( ref $Reply->{ 'answer' }->[0], 'Net::DNS::RR::PTR', 'New::DNS::RR::PTR object returned' );
6566 is( $Reply->{ 'answer' }->[0]->rdatastr(), 'reverse.example.com.', 'Correct Address returned' );;
67
68 $Resolver->die_on( 'cnameptr.example.com.', 'PTR', 'Die Test' );;
69 dies_ok( sub{ $Resolver->query( 'cnameptr.example.com.', 'PTR' ) }, 'Dies ok' );
6670 }
6771