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