]>
Commit | Line | Data |
---|---|---|
2fed5be3 PD |
1 | import dns |
2 | from recursortests import RecursorTest | |
3 | ||
4 | ||
5 | class testSortlist(RecursorTest): | |
6 | _confdir = 'Sortlist' | |
7 | ||
8 | _config_template = """dnssec=off""" | |
9 | _lua_config_file = """addSortList("0.0.0.0/0", | |
10 | {"17.238.240.0/24", "17.138.149.200", | |
11 | {"17.218.242.254", "17.218.252.254"}, | |
12 | "17.38.42.80", | |
13 | "17.208.240.100" })""" | |
14 | ||
15 | def testSortlist(self): | |
16 | msg = dns.message.make_query("sortcname.example.", dns.rdatatype.ANY) | |
17 | msg.flags = dns.flags.from_text('RD') | |
18 | ||
19 | res = self.sendUDPQuery(msg, fwparams=dict(one_rr_per_rrset=True)) | |
20 | ||
5b44ffbb | 21 | self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], []) |
2fed5be3 PD |
22 | self.assertRcodeEqual(res, dns.rcode.NOERROR) |
23 | ||
24 | indexCNAME = -1 | |
25 | indexMX = -1 | |
26 | recordsA = [] | |
27 | ||
28 | for i, ans in enumerate(res.answer): | |
29 | if ans.rdtype == dns.rdatatype.CNAME: | |
30 | self.assertEqual(indexCNAME, -1) | |
31 | indexCNAME = i | |
32 | elif ans.rdtype == dns.rdatatype.MX: | |
33 | self.assertEqual(indexMX, -1) | |
34 | indexMX = i | |
35 | elif ans.rdtype == dns.rdatatype.A: | |
36 | recordsA.append(str(ans).split()[-1]) | |
37 | ||
38 | self.assertEqual(indexCNAME, 0) | |
39 | self.assertGreater(indexMX, 0) | |
40 | ||
41 | self.assertEqual(recordsA, ['17.238.240.5', '17.38.42.80', '192.168.0.1']) |