1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_NO_MAIN
8 #include <boost/test/unit_test.hpp>
10 #include "test-common.hh"
13 BOOST_AUTO_TEST_SUITE(test_ixfr_cc
)
15 BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_axfr
) {
16 const ComboAddress
master("[2001:DB8::1]:53");
17 const DNSName
zone("JAIN.AD.JP.");
19 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
20 vector
<DNSRecord
> records
;
21 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
22 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::NS
, "NS.JAIN.AD.JP.");
23 addRecordToList(records
, DNSName("NS.JAIN.AD.JP."), QType::A
, "133.69.136.1");
24 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
25 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
26 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
28 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
29 BOOST_CHECK_EQUAL(ret
.size(), 1);
30 BOOST_CHECK_EQUAL(ret
.at(0).first
.size(), 0);
31 BOOST_REQUIRE_EQUAL(ret
.at(0).second
.size(), records
.size());
32 for (size_t idx
= 0; idx
< records
.size(); idx
++) {
33 BOOST_CHECK(ret
.at(0).second
.at(idx
) == records
.at(idx
));
37 BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_incremental
) {
38 const ComboAddress
master("[2001:DB8::1]:53");
39 const DNSName
zone("JAIN.AD.JP.");
41 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
42 vector
<DNSRecord
> records
;
43 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
44 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
45 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
46 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
47 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.4");
48 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
49 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
50 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.4");
51 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
52 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
53 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
55 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
57 BOOST_CHECK_EQUAL(ret
.size(), 2);
58 // the first one has one removal, two additions (plus the corresponding SOA removal/addition)
59 BOOST_CHECK_EQUAL(ret
.at(0).first
.size(), 1 + 1);
60 BOOST_CHECK_EQUAL(ret
.at(0).second
.size(), 2 + 1);
63 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(0).d_type
, QType(QType::SOA
).getCode());
64 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(1).d_type
, QType(QType::A
).getCode());
67 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(0).d_type
, QType(QType::SOA
).getCode());
68 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(1).d_type
, QType(QType::A
).getCode());
69 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(2).d_type
, QType(QType::A
).getCode());
71 // the second one has one removal, one addition
72 BOOST_CHECK_EQUAL(ret
.at(1).first
.size(), 1 + 1);
73 BOOST_CHECK_EQUAL(ret
.at(1).second
.size(), 1 + 1);
76 BOOST_CHECK_EQUAL(ret
.at(1).first
.at(0).d_type
, QType(QType::SOA
).getCode());
77 BOOST_CHECK_EQUAL(ret
.at(1).first
.at(1).d_type
, QType(QType::A
).getCode());
80 BOOST_CHECK_EQUAL(ret
.at(1).second
.at(0).d_type
, QType(QType::SOA
).getCode());
81 BOOST_CHECK_EQUAL(ret
.at(1).second
.at(1).d_type
, QType(QType::A
).getCode());
84 BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_condensed_incremental
) {
85 const ComboAddress
master("[2001:DB8::1]:53");
86 const DNSName
zone("JAIN.AD.JP.");
88 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
89 vector
<DNSRecord
> records
;
90 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
91 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
92 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
93 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
94 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
95 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
96 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
98 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
100 BOOST_CHECK_EQUAL(ret
.size(), 1);
101 // it has one removal, two additions (plus the corresponding SOA removal/addition)
102 BOOST_CHECK_EQUAL(ret
.at(0).first
.size(), 1 + 1);
103 BOOST_CHECK_EQUAL(ret
.at(0).second
.size(), 2 + 1);
106 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(0).d_type
, QType(QType::SOA
).getCode());
107 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(1).d_type
, QType(QType::A
).getCode());
110 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(0).d_type
, QType(QType::SOA
).getCode());
111 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(1).d_type
, QType(QType::A
).getCode());
112 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(2).d_type
, QType(QType::A
).getCode());
115 BOOST_AUTO_TEST_CASE(test_ixfr_no_additions_in_first_sequence
) {
116 const ComboAddress
master("[2001:DB8::1]:53");
117 const DNSName
zone("JAIN.AD.JP.");
119 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
120 vector
<DNSRecord
> records
;
121 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
122 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
123 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
124 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
125 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
126 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.5");
127 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
128 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
129 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
131 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
133 BOOST_CHECK_EQUAL(ret
.size(), 2);
134 // the first one has one removal, no additions (plus the corresponding SOA removal/addition)
135 BOOST_CHECK_EQUAL(ret
.at(0).first
.size(), 1 + 1);
136 BOOST_CHECK_EQUAL(ret
.at(0).second
.size(), 0 + 1);
139 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(0).d_type
, QType(QType::SOA
).getCode());
140 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(1).d_type
, QType(QType::A
).getCode());
143 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(0).d_type
, QType(QType::SOA
).getCode());
145 // the second one has one removal, one addition
146 BOOST_CHECK_EQUAL(ret
.at(1).first
.size(), 1 + 1);
147 BOOST_CHECK_EQUAL(ret
.at(1).second
.size(), 1 + 1);
150 BOOST_CHECK_EQUAL(ret
.at(1).first
.at(0).d_type
, QType(QType::SOA
).getCode());
151 BOOST_CHECK_EQUAL(ret
.at(1).first
.at(1).d_type
, QType(QType::A
).getCode());
154 BOOST_CHECK_EQUAL(ret
.at(1).second
.at(0).d_type
, QType(QType::SOA
).getCode());
155 BOOST_CHECK_EQUAL(ret
.at(1).second
.at(1).d_type
, QType(QType::A
).getCode());
158 BOOST_AUTO_TEST_CASE(test_ixfr_no_removals_in_first_sequence
) {
159 const ComboAddress
master("[2001:DB8::1]:53");
160 const DNSName
zone("JAIN.AD.JP.");
162 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
163 vector
<DNSRecord
> records
;
164 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
165 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
166 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
167 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.4");
168 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
169 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
170 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.4");
171 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
172 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
173 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
175 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
177 BOOST_CHECK_EQUAL(ret
.size(), 2);
178 // the first one has no removal, two additions (plus the corresponding SOA removal/addition)
179 BOOST_CHECK_EQUAL(ret
.at(0).first
.size(), 0 + 1);
180 BOOST_CHECK_EQUAL(ret
.at(0).second
.size(), 2 + 1);
183 BOOST_CHECK_EQUAL(ret
.at(0).first
.at(0).d_type
, QType(QType::SOA
).getCode());
186 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(0).d_type
, QType(QType::SOA
).getCode());
187 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(1).d_type
, QType(QType::A
).getCode());
188 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(1).d_type
, QType(QType::A
).getCode());
190 // the second one has one removal, one addition
191 BOOST_CHECK_EQUAL(ret
.at(1).first
.size(), 1 + 1);
192 BOOST_CHECK_EQUAL(ret
.at(1).second
.size(), 1 + 1);
195 BOOST_CHECK_EQUAL(ret
.at(1).first
.at(0).d_type
, QType(QType::SOA
).getCode());
196 BOOST_CHECK_EQUAL(ret
.at(1).first
.at(1).d_type
, QType(QType::A
).getCode());
199 BOOST_CHECK_EQUAL(ret
.at(1).second
.at(0).d_type
, QType(QType::SOA
).getCode());
200 BOOST_CHECK_EQUAL(ret
.at(1).second
.at(1).d_type
, QType(QType::A
).getCode());
203 BOOST_AUTO_TEST_CASE(test_ixfr_same_serial
) {
204 const ComboAddress
master("[2001:DB8::1]:53");
205 const DNSName
zone("JAIN.AD.JP.");
207 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
208 vector
<DNSRecord
> records
;
209 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
210 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
212 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
214 // this is actually an empty AXFR
215 BOOST_CHECK_EQUAL(ret
.size(), 1);
216 // nothing in the deletion part then
217 BOOST_CHECK_EQUAL(ret
.at(0).first
.size(), 0);
218 // and the two SOAs in the addition part
219 BOOST_CHECK_EQUAL(ret
.at(0).second
.size(), 2);
220 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(0).d_type
, QType(QType::SOA
).getCode());
221 BOOST_CHECK_EQUAL(ret
.at(0).second
.at(1).d_type
, QType(QType::SOA
).getCode());
224 BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_records
) {
225 const ComboAddress
master("[2001:DB8::1]:53");
226 const DNSName
zone("JAIN.AD.JP.");
228 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
229 vector
<DNSRecord
> records
;
231 auto ret
= processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
));
232 BOOST_CHECK_EQUAL(ret
.size(), 0);
235 BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_master_soa
) {
236 const ComboAddress
master("[2001:DB8::1]:53");
237 const DNSName
zone("JAIN.AD.JP.");
239 vector
<DNSRecord
> records
;
240 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
242 auto ret
= processIXFRRecords(master
, zone
, records
, nullptr);
243 BOOST_CHECK_EQUAL(ret
.size(), 0);
246 BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_trailing_soa
) {
247 const ComboAddress
master("[2001:DB8::1]:53");
248 const DNSName
zone("JAIN.AD.JP.");
250 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
251 vector
<DNSRecord
> records
;
252 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
253 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
254 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
255 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
256 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
257 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
259 BOOST_CHECK_THROW(processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
)), std::runtime_error
);
262 BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_soa_after_removals
) {
263 const ComboAddress
master("[2001:DB8::1]:53");
264 const DNSName
zone("JAIN.AD.JP.");
266 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
267 vector
<DNSRecord
> records
;
268 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
269 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
270 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
272 BOOST_CHECK_THROW(processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
)), std::runtime_error
);
275 BOOST_AUTO_TEST_CASE(test_ixfr_mistmatching_serial_before_and_after_additions
) {
276 const ComboAddress
master("[2001:DB8::1]:53");
277 const DNSName
zone("JAIN.AD.JP.");
279 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
280 vector
<DNSRecord
> records
;
281 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
282 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
283 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
284 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800");
285 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
286 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
287 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
289 BOOST_CHECK_THROW(processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
)), std::runtime_error
);
292 BOOST_AUTO_TEST_CASE(test_ixfr_trailing_record_after_end
) {
293 const ComboAddress
master("[2001:DB8::1]:53");
294 const DNSName
zone("JAIN.AD.JP.");
296 auto masterSOA
= DNSRecordContent::mastermake(QType::SOA
, QClass::IN
, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800");
297 vector
<DNSRecord
> records
;
298 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
299 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800");
300 addRecordToList(records
, DNSName("NEZU.JAIN.AD.JP."), QType::A
, "133.69.136.5");
301 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
302 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
303 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "192.41.197.2");
304 addRecordToList(records
, DNSName("JAIN.AD.JP."), QType::SOA
, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800");
305 addRecordToList(records
, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A
, "133.69.136.3");
307 BOOST_CHECK_THROW(processIXFRRecords(master
, zone
, records
, std::dynamic_pointer_cast
<SOARecordContent
>(masterSOA
)), std::runtime_error
);
310 BOOST_AUTO_TEST_SUITE_END();