]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_CheckConfig.py
Merge pull request #3453 from pieterlexis/silence-biowrite-warning
[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 sys
6
7 class TestCheckConfig(unittest.TestCase):
8
9 def tryDNSDist(self, configTemplate, shouldBeSuccessful=True):
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 not None:
21 if dnsdist.returncode != 0 and not shouldBeSuccessful:
22 sys.exit(1)
23 sys.exit(0)
24
25 def testWorkingConfig(self):
26 """
27 CheckConfig: Working configuration
28 """
29 configTemplate = """
30 newServer{address="127.0.0.1:53"}
31 truncateTC(true)
32 addAnyTCRule()
33 addAction(RegexRule("evil[0-9]{4,}\\\\.regex\\\\.tests\\\\.powerdns\\\\.com$"), RCodeAction(5))
34 mySMN = newSuffixMatchNode()
35 mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com."))
36 addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(4))
37 addAction(makeRule("drop.test.powerdns.com."), DropAction())
38 block=newDNSName("powerdns.org.")
39 function blockFilter(dq)
40 if(dq.qname:isPartOf(block))
41 then
42 print("Blocking *.powerdns.org")
43 return true
44 end
45 return false
46 end
47 """
48
49 self.tryDNSDist(configTemplate)
50
51 def testEmptyConfig(self):
52 """
53 CheckConfig: Empty config
54 """
55 configTemplate = ""
56 self.tryDNSDist(configTemplate)
57
58 def testInvalidFunction(self):
59 """
60 CheckConfig: Invalid function
61 """
62 configTemplate = """
63 oldServer { address="127.0.0.1:55" }
64 """
65 self.tryDNSDist(configTemplate, False)
66
67 def testInvalidParam(self):
68 """
69 CheckConfig: Invalid parameter
70 """
71 configTemplate = """
72 newServer { address="127.0.0.355" }
73 """
74 self.tryDNSDist(configTemplate, False)
75
76 def testSyntaxError(self):
77 """
78 CheckConfig: Syntax error
79 """
80 configTemplate = "blablabla"
81 self.tryDNSDist(configTemplate, False)