]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_CheckConfig.py
Merge branch 'validate-hostname' of https://github.com/hlindqvist/pdns into hlindqvis...
[thirdparty/pdns.git] / regression-tests.dnsdist / test_CheckConfig.py
1 #!/usr/bin/env python
2 import unittest
3 import os
4 import subprocess
5 import time
6
7 class TestCheckConfig(unittest.TestCase):
8
9 def tryDNSDist(self, configTemplate, shouldBeSuccessful=True, delay=1):
10 conffile = 'dnsdist_test.conf'
11 with open(conffile, 'w') as conf:
12 conf.write("-- Autogenerated by dnsdisttests.py\n")
13 conf.write(configTemplate)
14
15 dnsdistcmd = [os.environ['DNSDISTBIN'], '-C', conffile, '--check-config']
16
17 with open(os.devnull, 'w') as fdDevNull:
18 dnsdist = subprocess.Popen(dnsdistcmd, close_fds=True, stdout=fdDevNull)
19
20 if dnsdist.poll() is None:
21 time.sleep(delay)
22 self.assertNotEqual(dnsdist.poll(), None)
23
24 if shouldBeSuccessful:
25 self.assertEquals(dnsdist.returncode, 0)
26 else:
27 self.assertNotEqual(dnsdist.returncode, 0)
28
29 def testWorkingConfig(self):
30 """
31 CheckConfig: Working configuration
32 """
33 configTemplate = """
34 newServer{address="127.0.0.1:53"}
35 truncateTC(true)
36 addAnyTCRule()
37 addAction(RegexRule("evil[0-9]{4,}\\\\.regex\\\\.tests\\\\.powerdns\\\\.com$"), RCodeAction(dnsdist.REFUSED))
38 mySMN = newSuffixMatchNode()
39 mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com."))
40 addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(dnsdist.NOTIMP))
41 addAction(makeRule("drop.test.powerdns.com."), DropAction())
42 block=newDNSName("powerdns.org.")
43 function blockFilter(dq)
44 if(dq.qname:isPartOf(block))
45 then
46 print("Blocking *.powerdns.org")
47 return true
48 end
49 return false
50 end
51 """
52
53 self.tryDNSDist(configTemplate)
54
55 def testEmptyConfig(self):
56 """
57 CheckConfig: Empty config
58 """
59 configTemplate = ""
60 self.tryDNSDist(configTemplate)
61
62 def testInvalidFunction(self):
63 """
64 CheckConfig: Invalid function
65 """
66 configTemplate = """
67 oldServer { address="127.0.0.1:55" }
68 """
69 self.tryDNSDist(configTemplate, False)
70
71 def testInvalidParam(self):
72 """
73 CheckConfig: Invalid parameter
74 """
75 configTemplate = """
76 addACL("127.0.0.355")
77 """
78 self.tryDNSDist(configTemplate, False)
79
80 def testSyntaxError(self):
81 """
82 CheckConfig: Syntax error
83 """
84 configTemplate = "blablabla"
85 self.tryDNSDist(configTemplate, False)