tests/dns_forwarder: Add additional testing for no flag recursive
authorGarming Sam <garming@catalyst.net.nz>
Mon, 18 Apr 2016 04:31:17 +0000 (16:31 +1200)
committerGarming Sam <garming@samba.org>
Tue, 3 May 2016 06:10:10 +0000 (08:10 +0200)
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/dns_forwarder.py

index 52fbcc286a9e89fb606d70ae383b809b149e8239..a90b0070619b5d6f850a9b3fd06cc511cde45163 100644 (file)
@@ -251,6 +251,33 @@ class TestDnsForwarding(DNSTest):
         except socket.timeout:
             self.fail("DNS server is too slow (timeout %s)" % timeout)
 
+    def test_no_flag_recursive_forwarder(self):
+        ad = contact_real_server(server_ip, 53)
+
+        name = "dsfsfds.dsfsdfs"
+        p = self.make_name_packet(dns.DNS_OPCODE_QUERY)
+        questions = []
+
+        q = self.make_name_question(name, dns.DNS_QTYPE_TXT, dns.DNS_QCLASS_IN)
+        questions.append(q)
+
+        self.finish_name_packet(p, questions)
+        send_packet = ndr.ndr_pack(p)
+
+        self.finish_name_packet(p, questions)
+        # Leave off the recursive flag
+        send_packet = ndr.ndr_pack(p)
+
+        ad.send(send_packet, 0)
+        ad.settimeout(timeout)
+        try:
+            data = ad.recv(0xffff + 2, 0)
+            data = ndr.ndr_unpack(dns.name_packet, data)
+            self.assert_dns_rcode_equals(data, dns.DNS_RCODE_NXDOMAIN)
+            self.assertEqual(data.ancount, 0)
+        except socket.timeout:
+            self.fail("DNS server is too slow (timeout %s)" % timeout)
+
     def test_single_forwarder(self):
         s = self.start_toy_server(dns_servers[0], 53, 'forwarder1')
         ad = contact_real_server(server_ip, 53)