]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - regression-tests.dnsdist/test_CheckConfig.py
Merge pull request #8945 from rgacogne/ddist-x-forwarded-for
[thirdparty/pdns.git] / regression-tests.dnsdist / test_CheckConfig.py
index 71a7132bce4ea25d607ff3830ef304acebaacd72..835d7ae8dd5b016d0edef6e1af9f87555d97b8dc 100644 (file)
@@ -2,12 +2,11 @@
 import unittest
 import os
 import subprocess
-import sys
+import time
 
 class TestCheckConfig(unittest.TestCase):
 
-    @staticmethod
-    def tryDNSDist(configTemplate, shouldBeSuccessful=True):
+    def tryDNSDist(self, configTemplate, shouldBeSuccessful=True, delay=1):
         conffile = 'dnsdist_test.conf'
         with open(conffile, 'w') as conf:
             conf.write("-- Autogenerated by dnsdisttests.py\n")
@@ -18,10 +17,14 @@ class TestCheckConfig(unittest.TestCase):
         with open(os.devnull, 'w') as fdDevNull:
             dnsdist = subprocess.Popen(dnsdistcmd, close_fds=True, stdout=fdDevNull)
 
-        if dnsdist.poll() is not None:
-            if dnsdist.returncode != 0 and not shouldBeSuccessful:
-                sys.exit(1)
-            sys.exit(0)
+        if dnsdist.poll() is None:
+            time.sleep(delay)
+            self.assertNotEqual(dnsdist.poll(), None)
+
+        if shouldBeSuccessful:
+            self.assertEquals(dnsdist.returncode, 0)
+        else:
+            self.assertNotEqual(dnsdist.returncode, 0)
 
     def testWorkingConfig(self):
         """
@@ -30,21 +33,16 @@ class TestCheckConfig(unittest.TestCase):
         configTemplate = """
             newServer{address="127.0.0.1:53"}
             truncateTC(true)
-            addAnyTCRule()
-            addAction(RegexRule("evil[0-9]{4,}\\\\.regex\\\\.tests\\\\.powerdns\\\\.com$"), RCodeAction(5))
+            addAction(AndRule{QTypeRule(DNSQType.ANY), TCPRule(false)}, TCAction())
+            addAction(RegexRule("evil[0-9]{4,}\\\\.regex\\\\.tests\\\\.powerdns\\\\.com$"), RCodeAction(DNSRCode.REFUSED))
             mySMN = newSuffixMatchNode()
             mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com."))
-            addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(4))
+            mySMN:add("string.smn.tests.powerdns.com.")
+            mySMN:add("string-no-dot.smn.tests.powerdns.com")
+            mySMN:add({"string-one.smn.tests.powerdns.com", "string-two.smn.tests.powerdns.com"})
+            mySMN:add({newDNSName("dnsname-one.smn.tests.powerdns.com"), newDNSName("dnsname-two.smn.tests.powerdns.com")})
+            addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(DNSRCode.NOTIMP))
             addAction(makeRule("drop.test.powerdns.com."), DropAction())
-            block=newDNSName("powerdns.org.")
-            function blockFilter(dq)
-                if(dq.qname:isPartOf(block))
-                then
-                    print("Blocking *.powerdns.org")
-                    return true
-                end
-                return false
-            end
         """
 
         self.tryDNSDist(configTemplate)
@@ -70,7 +68,7 @@ class TestCheckConfig(unittest.TestCase):
         CheckConfig: Invalid parameter
         """
         configTemplate = """
-          newServer { address="127.0.0.355" }
+          addACL("127.0.0.355")
         """
         self.tryDNSDist(configTemplate, False)