]>
Commit | Line | Data |
---|---|---|
1c2d079d | 1 | #ifndef BOOST_TEST_DYN_LINK |
e503653f | 2 | #define BOOST_TEST_DYN_LINK |
1c2d079d FM |
3 | #endif |
4 | ||
e503653f RG |
5 | #define BOOST_TEST_NO_MAIN |
6 | ||
7 | #ifdef HAVE_CONFIG_H | |
8 | #include "config.h" | |
9 | #endif | |
10 | ||
11 | #include <boost/test/unit_test.hpp> | |
12 | ||
13 | #include "test-common.hh" | |
14 | #include "ixfr.hh" | |
15 | ||
c7f29d3e | 16 | BOOST_AUTO_TEST_SUITE(test_ixfr_cc) |
e503653f RG |
17 | |
18 | BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_axfr) { | |
d525b58b | 19 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
20 | const DNSName zone("JAIN.AD.JP."); |
21 | ||
d525b58b | 22 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
23 | vector<DNSRecord> records; |
24 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
25 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::NS, "NS.JAIN.AD.JP."); | |
26 | addRecordToList(records, DNSName("NS.JAIN.AD.JP."), QType::A, "133.69.136.1"); | |
27 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
28 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
29 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
30 | ||
d525b58b | 31 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
690b86b7 OM |
32 | BOOST_CHECK_EQUAL(ret.size(), 1U); |
33 | BOOST_CHECK_EQUAL(ret.at(0).first.size(), 0U); | |
e503653f RG |
34 | BOOST_REQUIRE_EQUAL(ret.at(0).second.size(), records.size()); |
35 | for (size_t idx = 0; idx < records.size(); idx++) { | |
36 | BOOST_CHECK(ret.at(0).second.at(idx) == records.at(idx)); | |
37 | } | |
38 | } | |
39 | ||
40 | BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_incremental) { | |
d525b58b | 41 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
42 | const DNSName zone("JAIN.AD.JP."); |
43 | ||
d525b58b | 44 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
45 | vector<DNSRecord> records; |
46 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
47 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
48 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
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-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
52 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800"); | |
53 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.4"); | |
54 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
55 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
56 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
57 | ||
d525b58b | 58 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
e503653f | 59 | // two sequences |
690b86b7 | 60 | BOOST_CHECK_EQUAL(ret.size(), 2U); |
e503653f | 61 | // the first one has one removal, two additions (plus the corresponding SOA removal/addition) |
690b86b7 OM |
62 | BOOST_CHECK_EQUAL(ret.at(0).first.size(), 1U + 1U); |
63 | BOOST_CHECK_EQUAL(ret.at(0).second.size(), 2U + 1U); | |
e503653f RG |
64 | |
65 | // check removals | |
66 | BOOST_CHECK_EQUAL(ret.at(0).first.at(0).d_type, QType(QType::SOA).getCode()); | |
67 | BOOST_CHECK_EQUAL(ret.at(0).first.at(1).d_type, QType(QType::A).getCode()); | |
68 | ||
69 | // check additions | |
70 | BOOST_CHECK_EQUAL(ret.at(0).second.at(0).d_type, QType(QType::SOA).getCode()); | |
71 | BOOST_CHECK_EQUAL(ret.at(0).second.at(1).d_type, QType(QType::A).getCode()); | |
72 | BOOST_CHECK_EQUAL(ret.at(0).second.at(2).d_type, QType(QType::A).getCode()); | |
73 | ||
74 | // the second one has one removal, one addition | |
690b86b7 OM |
75 | BOOST_CHECK_EQUAL(ret.at(1).first.size(), 1U + 1U); |
76 | BOOST_CHECK_EQUAL(ret.at(1).second.size(), 1U + 1U); | |
e503653f RG |
77 | |
78 | // check removals | |
79 | BOOST_CHECK_EQUAL(ret.at(1).first.at(0).d_type, QType(QType::SOA).getCode()); | |
80 | BOOST_CHECK_EQUAL(ret.at(1).first.at(1).d_type, QType(QType::A).getCode()); | |
81 | ||
82 | // check additions | |
83 | BOOST_CHECK_EQUAL(ret.at(1).second.at(0).d_type, QType(QType::SOA).getCode()); | |
84 | BOOST_CHECK_EQUAL(ret.at(1).second.at(1).d_type, QType(QType::A).getCode()); | |
85 | } | |
86 | ||
87 | BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_condensed_incremental) { | |
d525b58b | 88 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
89 | const DNSName zone("JAIN.AD.JP."); |
90 | ||
d525b58b | 91 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
92 | vector<DNSRecord> records; |
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.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
95 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
96 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
97 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
98 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
99 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
100 | ||
d525b58b | 101 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
e503653f | 102 | // one sequence |
690b86b7 | 103 | BOOST_CHECK_EQUAL(ret.size(), 1U); |
e503653f | 104 | // it has one removal, two additions (plus the corresponding SOA removal/addition) |
690b86b7 OM |
105 | BOOST_CHECK_EQUAL(ret.at(0).first.size(), 1U + 1U); |
106 | BOOST_CHECK_EQUAL(ret.at(0).second.size(), 2U + 1U); | |
e503653f RG |
107 | |
108 | // check removals | |
109 | BOOST_CHECK_EQUAL(ret.at(0).first.at(0).d_type, QType(QType::SOA).getCode()); | |
110 | BOOST_CHECK_EQUAL(ret.at(0).first.at(1).d_type, QType(QType::A).getCode()); | |
111 | ||
112 | // check additions | |
113 | BOOST_CHECK_EQUAL(ret.at(0).second.at(0).d_type, QType(QType::SOA).getCode()); | |
114 | BOOST_CHECK_EQUAL(ret.at(0).second.at(1).d_type, QType(QType::A).getCode()); | |
115 | BOOST_CHECK_EQUAL(ret.at(0).second.at(2).d_type, QType(QType::A).getCode()); | |
116 | } | |
117 | ||
118 | BOOST_AUTO_TEST_CASE(test_ixfr_no_additions_in_first_sequence) { | |
d525b58b | 119 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
120 | const DNSName zone("JAIN.AD.JP."); |
121 | ||
d525b58b | 122 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
123 | vector<DNSRecord> records; |
124 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
125 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
126 | addRecordToList(records, DNSName("NEZU.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. 2 600 600 3600000 604800"); | |
128 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800"); | |
129 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
130 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
131 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
132 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
133 | ||
d525b58b | 134 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
e503653f | 135 | // two sequences |
690b86b7 | 136 | BOOST_CHECK_EQUAL(ret.size(), 2U); |
e503653f | 137 | // the first one has one removal, no additions (plus the corresponding SOA removal/addition) |
690b86b7 OM |
138 | BOOST_CHECK_EQUAL(ret.at(0).first.size(), 1U + 1U); |
139 | BOOST_CHECK_EQUAL(ret.at(0).second.size(), 0U + 1U); | |
e503653f RG |
140 | |
141 | // check removals | |
142 | BOOST_CHECK_EQUAL(ret.at(0).first.at(0).d_type, QType(QType::SOA).getCode()); | |
143 | BOOST_CHECK_EQUAL(ret.at(0).first.at(1).d_type, QType(QType::A).getCode()); | |
144 | ||
145 | // check additions | |
146 | BOOST_CHECK_EQUAL(ret.at(0).second.at(0).d_type, QType(QType::SOA).getCode()); | |
147 | ||
148 | // the second one has one removal, one addition | |
690b86b7 OM |
149 | BOOST_CHECK_EQUAL(ret.at(1).first.size(), 1U + 1U); |
150 | BOOST_CHECK_EQUAL(ret.at(1).second.size(), 1U + 1U); | |
e503653f RG |
151 | |
152 | // check removals | |
153 | BOOST_CHECK_EQUAL(ret.at(1).first.at(0).d_type, QType(QType::SOA).getCode()); | |
154 | BOOST_CHECK_EQUAL(ret.at(1).first.at(1).d_type, QType(QType::A).getCode()); | |
155 | ||
156 | // check additions | |
157 | BOOST_CHECK_EQUAL(ret.at(1).second.at(0).d_type, QType(QType::SOA).getCode()); | |
158 | BOOST_CHECK_EQUAL(ret.at(1).second.at(1).d_type, QType(QType::A).getCode()); | |
159 | } | |
160 | ||
161 | BOOST_AUTO_TEST_CASE(test_ixfr_no_removals_in_first_sequence) { | |
d525b58b | 162 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
163 | const DNSName zone("JAIN.AD.JP."); |
164 | ||
d525b58b | 165 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
166 | vector<DNSRecord> records; |
167 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
168 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
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-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
172 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800"); | |
173 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.4"); | |
174 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
175 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
176 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
177 | ||
d525b58b | 178 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
e503653f | 179 | // two sequences |
690b86b7 | 180 | BOOST_CHECK_EQUAL(ret.size(), 2U); |
e503653f | 181 | // the first one has no removal, two additions (plus the corresponding SOA removal/addition) |
690b86b7 OM |
182 | BOOST_CHECK_EQUAL(ret.at(0).first.size(), 0U + 1U); |
183 | BOOST_CHECK_EQUAL(ret.at(0).second.size(), 2U + 1U); | |
e503653f RG |
184 | |
185 | // check removals | |
186 | BOOST_CHECK_EQUAL(ret.at(0).first.at(0).d_type, QType(QType::SOA).getCode()); | |
187 | ||
188 | // check additions | |
189 | BOOST_CHECK_EQUAL(ret.at(0).second.at(0).d_type, QType(QType::SOA).getCode()); | |
190 | BOOST_CHECK_EQUAL(ret.at(0).second.at(1).d_type, QType(QType::A).getCode()); | |
191 | BOOST_CHECK_EQUAL(ret.at(0).second.at(1).d_type, QType(QType::A).getCode()); | |
192 | ||
193 | // the second one has one removal, one addition | |
690b86b7 OM |
194 | BOOST_CHECK_EQUAL(ret.at(1).first.size(), 1U + 1U); |
195 | BOOST_CHECK_EQUAL(ret.at(1).second.size(), 1U + 1U); | |
e503653f RG |
196 | |
197 | // check removals | |
198 | BOOST_CHECK_EQUAL(ret.at(1).first.at(0).d_type, QType(QType::SOA).getCode()); | |
199 | BOOST_CHECK_EQUAL(ret.at(1).first.at(1).d_type, QType(QType::A).getCode()); | |
200 | ||
201 | // check additions | |
202 | BOOST_CHECK_EQUAL(ret.at(1).second.at(0).d_type, QType(QType::SOA).getCode()); | |
203 | BOOST_CHECK_EQUAL(ret.at(1).second.at(1).d_type, QType(QType::A).getCode()); | |
204 | } | |
205 | ||
206 | BOOST_AUTO_TEST_CASE(test_ixfr_same_serial) { | |
d525b58b | 207 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
208 | const DNSName zone("JAIN.AD.JP."); |
209 | ||
d525b58b | 210 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
211 | vector<DNSRecord> records; |
212 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
213 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
214 | ||
d525b58b | 215 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
e503653f | 216 | |
98b33176 | 217 | // this is actually an empty AXFR |
690b86b7 | 218 | BOOST_CHECK_EQUAL(ret.size(), 1U); |
98b33176 | 219 | // nothing in the deletion part then |
690b86b7 | 220 | BOOST_CHECK_EQUAL(ret.at(0).first.size(), 0U); |
98b33176 | 221 | // and the two SOAs in the addition part |
690b86b7 | 222 | BOOST_CHECK_EQUAL(ret.at(0).second.size(), 2U); |
98b33176 RG |
223 | BOOST_CHECK_EQUAL(ret.at(0).second.at(0).d_type, QType(QType::SOA).getCode()); |
224 | BOOST_CHECK_EQUAL(ret.at(0).second.at(1).d_type, QType(QType::SOA).getCode()); | |
e503653f RG |
225 | } |
226 | ||
227 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_records) { | |
d525b58b | 228 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
229 | const DNSName zone("JAIN.AD.JP."); |
230 | ||
d525b58b | 231 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
232 | vector<DNSRecord> records; |
233 | ||
d525b58b | 234 | auto ret = processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)); |
690b86b7 | 235 | BOOST_CHECK_EQUAL(ret.size(), 0U); |
e503653f RG |
236 | } |
237 | ||
d525b58b KM |
238 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_primary_soa) |
239 | { | |
240 | const ComboAddress primary("[2001:DB8::1]:53"); | |
e503653f RG |
241 | const DNSName zone("JAIN.AD.JP."); |
242 | ; | |
243 | vector<DNSRecord> records; | |
244 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
245 | ||
d525b58b | 246 | auto ret = processIXFRRecords(primary, zone, records, nullptr); |
690b86b7 | 247 | BOOST_CHECK_EQUAL(ret.size(), 0U); |
e503653f RG |
248 | } |
249 | ||
250 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_trailing_soa) { | |
d525b58b | 251 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
252 | const DNSName zone("JAIN.AD.JP."); |
253 | ||
d525b58b | 254 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
255 | vector<DNSRecord> records; |
256 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
257 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
258 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
259 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
260 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
261 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
262 | ||
d525b58b | 263 | BOOST_CHECK_THROW(processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)), std::runtime_error); |
e503653f RG |
264 | } |
265 | ||
266 | BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_soa_after_removals) { | |
d525b58b | 267 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
268 | const DNSName zone("JAIN.AD.JP."); |
269 | ||
d525b58b | 270 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
271 | vector<DNSRecord> records; |
272 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
273 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
274 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
275 | ||
d525b58b | 276 | BOOST_CHECK_THROW(processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)), std::runtime_error); |
e503653f RG |
277 | } |
278 | ||
ce3b897d | 279 | BOOST_AUTO_TEST_CASE(test_ixfr_mismatching_serial_before_and_after_additions) { |
d525b58b | 280 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
281 | const DNSName zone("JAIN.AD.JP."); |
282 | ||
d525b58b | 283 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
284 | vector<DNSRecord> records; |
285 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
286 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
287 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
288 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 2 600 600 3600000 604800"); | |
289 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
290 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
291 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
292 | ||
d525b58b | 293 | BOOST_CHECK_THROW(processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)), std::runtime_error); |
e503653f RG |
294 | } |
295 | ||
296 | BOOST_AUTO_TEST_CASE(test_ixfr_trailing_record_after_end) { | |
d525b58b | 297 | const ComboAddress primary("[2001:DB8::1]:53"); |
e503653f RG |
298 | const DNSName zone("JAIN.AD.JP."); |
299 | ||
d525b58b | 300 | auto primarySOA = DNSRecordContent::make(QType::SOA, QClass::IN, "NS.JAIN.AD.JP. mohta.jain.ad.jp. 3 600 600 3600000 604800"); |
e503653f RG |
301 | vector<DNSRecord> records; |
302 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
303 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 1 600 600 3600000 604800"); | |
304 | addRecordToList(records, DNSName("NEZU.JAIN.AD.JP."), QType::A, "133.69.136.5"); | |
305 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
306 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
307 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "192.41.197.2"); | |
308 | addRecordToList(records, DNSName("JAIN.AD.JP."), QType::SOA, "ns.jain.ad.jp. mohta.jain.ad.jp. 3 600 600 3600000 604800"); | |
309 | addRecordToList(records, DNSName("JAIN-BB.JAIN.AD.JP."), QType::A, "133.69.136.3"); | |
310 | ||
d525b58b | 311 | BOOST_CHECK_THROW(processIXFRRecords(primary, zone, records, std::dynamic_pointer_cast<SOARecordContent>(primarySOA)), std::runtime_error); |
e503653f RG |
312 | } |
313 | ||
314 | BOOST_AUTO_TEST_SUITE_END(); |