1# Basic plugin tests
2
3use _GDT ();
4use Test::More tests => 28;
5
6my $neg_soa = 'example.com 900 SOA ns1.example.com hostmaster.example.com 1 7200 1800 259200 900';
7
8my $pid = _GDT->test_spawn_daemon();
9
10_GDT->test_dns(
11    qname => 'example.com', qtype => 'SOA',
12    answer => 'example.com 86400 SOA ns1.example.com hostmaster.example.com 1 7200 1800 259200 900',
13);
14
15_GDT->test_dns(
16    v4_only => 1,
17    qname => 'r.example.com', qtype => 'A',
18    answer => 'r.example.com 86400 A 127.0.0.1',
19);
20
21_GDT->test_dns(
22    v6_only => 1,
23    qname => 'r.example.com', qtype => 'A',
24    auth  => $neg_soa,
25    addtl => 'r.example.com 86400 AAAA ::1',
26);
27
28_GDT->test_dns(
29    v6_only => 1,
30    qname => 'r.example.com', qtype => 'AAAA',
31    answer => 'r.example.com 86400 AAAA ::1',
32);
33
34_GDT->test_dns(
35    v4_only => 1,
36    qname => 'r.example.com', qtype => 'AAAA',
37    auth  => $neg_soa,
38    addtl => 'r.example.com 86400 A 127.0.0.1',
39);
40
41_GDT->test_dns(
42    qname => 'n.example.com', qtype => 'A',
43    answer => 'n.example.com 86400 A 0.0.0.0',
44    addtl => 'n.example.com 86400 AAAA ::',
45);
46
47_GDT->test_dns(
48    qname => 'b41.example.com', qtype => 'A',
49    answer => 'b41.example.com 86400 A 192.0.2.41',
50);
51
52_GDT->test_dns(
53    qname => 'n-x.example.com', qtype => 'A',
54    answer => 'n-x.example.com 86400 A 0.0.0.0',
55    addtl => 'n-x.example.com 86400 AAAA ::',
56);
57
58_GDT->test_dns(
59    qname => 'b41.example.com', qtype => 'A',
60    answer => 'b41.example.com 86400 A 192.0.2.41',
61);
62
63_GDT->test_dns(
64    qname => 'n-x.example.com', qtype => 'AAAA',
65    answer => 'n-x.example.com 86400 AAAA ::',
66    addtl => 'n-x.example.com 86400 A 0.0.0.0',
67);
68
69_GDT->test_dns(
70    v4_only => 1,
71    qname => 'addtl.example.com', qtype => 'MX',
72    answer => 'addtl.example.com 86400 MX 0 r.example.com',
73    addtl => 'r.example.com 86400 A 127.0.0.1',
74);
75
76_GDT->test_dns(
77    v6_only => 1,
78    qname => 'addtl.example.com', qtype => 'MX',
79    answer => 'addtl.example.com 86400 MX 0 r.example.com',
80    addtl => 'r.example.com 86400 AAAA ::1',
81);
82
83_GDT->test_dns(
84    qname => 'f42.example.com', qtype => 'A',
85    answer => 'f42.example.com 86400 A 192.0.2.42',
86);
87
88_GDT->test_dns(
89    qname => 'example.com', qtype => 'NS',
90    answer => [
91        'example.com 86400 NS ns1.example.com',
92        'example.com 86400 NS f42.example.com',
93        'example.com 86400 NS ns1.example.net',
94    ],
95    addtl => [
96        'ns1.example.com 86400 A 192.0.2.1',
97        'f42.example.com 86400 A 192.0.2.42',
98        'ns1.example.net 86400 A 192.0.2.41',
99    ],
100);
101
102_GDT->test_dns(
103    qname => 'www.subz.example.com', qtype => 'A',
104    header => { aa => 0 },
105    auth => [
106        'subz.example.com 86400 NS ns1.subz.example.com',
107    ],
108    addtl => [
109        'ns1.subz.example.com 86400 A 192.0.2.41',
110    ],
111);
112
113_GDT->test_dns(
114    qname => 'sfo1.example.com', qtype => 'A',
115    answer => 'sfo1.example.com 86400 A 192.0.2.140',
116);
117
118_GDT->test_dns(
119    qname => 'sfo2.example.com', qtype => 'A',
120    answer => 'sfo2.example.com 86400 A 192.0.2.150',
121);
122
123_GDT->test_dns(
124    qname => 'sfo3.example.com', qtype => 'A',
125    auth => $neg_soa,
126    addtl => 'sfo3.example.com 86400 AAAA 2001:DB8::DEAD',
127);
128
129_GDT->test_dns(
130    qname => 'sfo4.example.com', qtype => 'AAAA',
131    answer => 'sfo4.example.com 86400 AAAA 2001:DB8::B00',
132);
133
134_GDT->test_dns(
135    qname => 'sfo5.example.com', qtype => 'AAAA',
136    answer => 'sfo5.example.com 86399 AAAA 2001:DB8::AAA',
137    addtl => 'sfo5.example.com 86399 A 192.0.2.170',
138);
139
140_GDT->test_dns(
141    qname => 'mfo1.example.com', qtype => 'A',
142    answer => [
143        'mfo1.example.com 86400 A 192.0.2.101',
144        'mfo1.example.com 86400 A 192.0.2.102',
145        'mfo1.example.com 86400 A 192.0.2.103',
146    ],
147    addtl => [
148        'mfo1.example.com 86400 AAAA 2001:DB8::101',
149        'mfo1.example.com 86400 AAAA 2001:DB8::102',
150    ],
151);
152
153_GDT->test_dns(
154    qname => 'mfo1.example.com', qtype => 'AAAA',
155    answer => [
156        'mfo1.example.com 86400 AAAA 2001:DB8::101',
157        'mfo1.example.com 86400 AAAA 2001:DB8::102',
158    ],
159    addtl => [
160        'mfo1.example.com 86400 A 192.0.2.101',
161        'mfo1.example.com 86400 A 192.0.2.102',
162        'mfo1.example.com 86400 A 192.0.2.103',
163    ],
164);
165
166_GDT->test_dns(
167    qname => 'mfo2.example.com', qtype => 'A',
168    answer => [
169        'mfo2.example.com 86400 A 192.0.2.111',
170        'mfo2.example.com 86400 A 192.0.2.112',
171    ],
172);
173
174_GDT->test_dns(
175    qname => 'mfo2.example.com', qtype => 'AAAA',
176    auth => $neg_soa,
177    addtl => [
178        'mfo2.example.com 86400 A 192.0.2.111',
179        'mfo2.example.com 86400 A 192.0.2.112',
180    ],
181);
182
183_GDT->test_dns(
184    qname => 'mfo3.example.com', qtype => 'AAAA',
185    answer => [
186        'mfo3.example.com 86400 AAAA 2001:DB8::Deca:fBad',
187        'mfo3.example.com 86400 AAAA 2001:DB8::AD15:eA5e',
188    ],
189);
190
191_GDT->test_dns(
192    qname => 'adyn.example.com', qtype => 'A',
193    answer => 'adyn.example.com 86400 A 192.0.2.41',
194);
195
196_GDT->test_kill_daemon($pid);
197