]>
Commit | Line | Data |
---|---|---|
e503653f RG |
1 | #define BOOST_TEST_DYN_LINK |
2 | #define BOOST_TEST_NO_MAIN | |
3 | ||
4 | #ifdef HAVE_CONFIG_H | |
5 | #include "config.h" | |
6 | #endif | |
7 | ||
8 | #include <boost/test/unit_test.hpp> | |
9 | ||
10 | #include "test-common.hh" | |
11 | #include "ixfr.hh" | |
12 | ||
13 | BOOST_AUTO_TEST_SUITE(ixfr_cc) | |
14 | ||
15 | BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_axfr) { | |
16 | const ComboAddress master("[2001:DB8::1]:53"); | |
17 | const DNSName zone("JAIN.AD.JP."); | |
18 | ||
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"); | |
27 | ||
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)); | |
34 | } | |
35 | } | |
36 | ||
37 | BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_incremental) { | |
38 | const ComboAddress master("[2001:DB8::1]:53"); | |
39 | const DNSName zone("JAIN.AD.JP."); | |
40 | ||
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"); | |
54 | ||
55 | auto ret = processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)); | |
56 | // two sequences | |
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); | |
61 | ||
62 | // check removals | |
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()); | |
65 | ||
66 | // check additions | |
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()); | |
70 | ||
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); | |
74 | ||
75 | // check removals | |
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()); | |
78 | ||
79 | // check additions | |
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()); | |
82 | } | |
83 | ||
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."); | |
87 | ||
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"); | |
97 | ||
98 | auto ret = processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)); | |
99 | // one sequence | |
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); | |
104 | ||
105 | // check removals | |
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()); | |
108 | ||
109 | // check additions | |
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()); | |
113 | } | |
114 | ||
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."); | |
118 | ||
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"); | |
130 | ||
131 | auto ret = processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)); | |
132 | // two sequences | |
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); | |
137 | ||
138 | // check removals | |
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()); | |
141 | ||
142 | // check additions | |
143 | BOOST_CHECK_EQUAL(ret.at(0).second.at(0).d_type, QType(QType::SOA).getCode()); | |
144 | ||
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); | |
148 | ||
149 | // check removals | |
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()); | |
152 | ||
153 | // check additions | |
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()); | |
156 | } | |
157 | ||
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."); | |
161 | ||
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"); | |
174 | ||
175 | auto ret = processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)); | |
176 | // two sequences | |
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); | |
181 | ||
182 | // check removals | |
183 | BOOST_CHECK_EQUAL(ret.at(0).first.at(0).d_type, QType(QType::SOA).getCode()); | |
184 | ||
185 | // check additions | |
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()); | |
189 | ||
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); | |
193 | ||
194 | // check removals | |
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()); | |
197 | ||
198 | // check additions | |
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()); | |
201 | } | |
202 | ||
203 | BOOST_AUTO_TEST_CASE(test_ixfr_same_serial) { | |
204 | const ComboAddress master("[2001:DB8::1]:53"); | |
205 | const DNSName zone("JAIN.AD.JP."); | |
206 | ||
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"); | |
211 | ||
212 | auto ret = processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)); | |
213 | ||
214 | BOOST_CHECK_EQUAL(ret.size(), 0); | |
215 | } | |
216 | ||
217 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_records) { | |
218 | const ComboAddress master("[2001:DB8::1]:53"); | |
219 | const DNSName zone("JAIN.AD.JP."); | |
220 | ||
221 | auto masterSOA = DNSRecordContent::mastermake(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
222 | vector<DNSRecord> records; | |
223 | ||
224 | auto ret = processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)); | |
225 | BOOST_CHECK_EQUAL(ret.size(), 0); | |
226 | } | |
227 | ||
228 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_master_soa) { | |
229 | const ComboAddress master("[2001:DB8::1]:53"); | |
230 | const DNSName zone("JAIN.AD.JP."); | |
231 | ; | |
232 | vector<DNSRecord> records; | |
233 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
234 | ||
235 | auto ret = processIXFRRecords(master, zone, records, nullptr); | |
236 | BOOST_CHECK_EQUAL(ret.size(), 0); | |
237 | } | |
238 | ||
239 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_trailing_soa) { | |
240 | const ComboAddress master("[2001:DB8::1]:53"); | |
241 | const DNSName zone("JAIN.AD.JP."); | |
242 | ||
243 | auto masterSOA = DNSRecordContent::mastermake(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
244 | vector<DNSRecord> records; | |
245 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
246 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
247 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
248 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
249 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
250 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
251 | ||
252 | BOOST_CHECK_THROW(processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)), std::runtime_error); | |
253 | } | |
254 | ||
255 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_soa_after_removals) { | |
256 | const ComboAddress master("[2001:DB8::1]:53"); | |
257 | const DNSName zone("JAIN.AD.JP."); | |
258 | ||
259 | auto masterSOA = DNSRecordContent::mastermake(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
260 | vector<DNSRecord> records; | |
261 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
262 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
263 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
264 | ||
265 | BOOST_CHECK_THROW(processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)), std::runtime_error); | |
266 | } | |
267 | ||
268 | BOOST_AUTO_TEST_CASE(test_ixfr_mistmatching_serial_before_and_after_additions) { | |
269 | const ComboAddress master("[2001:DB8::1]:53"); | |
270 | const DNSName zone("JAIN.AD.JP."); | |
271 | ||
272 | auto masterSOA = DNSRecordContent::mastermake(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
273 | vector<DNSRecord> records; | |
274 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
275 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
276 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
277 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800"); | |
278 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
279 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
280 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
281 | ||
282 | BOOST_CHECK_THROW(processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)), std::runtime_error); | |
283 | } | |
284 | ||
285 | BOOST_AUTO_TEST_CASE(test_ixfr_trailing_record_after_end) { | |
286 | const ComboAddress master("[2001:DB8::1]:53"); | |
287 | const DNSName zone("JAIN.AD.JP."); | |
288 | ||
289 | auto masterSOA = DNSRecordContent::mastermake(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
290 | vector<DNSRecord> records; | |
291 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
292 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
293 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
294 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
295 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
296 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
297 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
298 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
299 | ||
300 | BOOST_CHECK_THROW(processIXFRRecords(master, zone, records, std::dynamic_pointer_cast<SOARecordContent>(masterSOA)), std::runtime_error); | |
301 | } | |
302 | ||
303 | BOOST_AUTO_TEST_SUITE_END(); |