]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_CheckConfig.py
7 class TestCheckConfig(unittest
.TestCase
):
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
)
15 dnsdistcmd
= [os
.environ
['DNSDISTBIN'], '-C', conffile
, '--check-config']
17 with
open(os
.devnull
, 'w') as fdDevNull
:
18 dnsdist
= subprocess
.Popen(dnsdistcmd
, close_fds
=True, stdout
=fdDevNull
)
20 if dnsdist
.poll() is None:
22 self
.assertNotEqual(dnsdist
.poll(), None)
24 if shouldBeSuccessful
:
25 self
.assertEquals(dnsdist
.returncode
, 0)
27 self
.assertNotEqual(dnsdist
.returncode
, 0)
29 def testWorkingConfig(self
):
31 CheckConfig: Working configuration
34 newServer{address="127.0.0.1:53"}
36 addAction(AndRule{QTypeRule(dnsdist.ANY), TCPRule(false)}, TCAction())
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())
44 self
.tryDNSDist(configTemplate
)
46 def testEmptyConfig(self
):
48 CheckConfig: Empty config
51 self
.tryDNSDist(configTemplate
)
53 def testInvalidFunction(self
):
55 CheckConfig: Invalid function
58 oldServer { address="127.0.0.1:55" }
60 self
.tryDNSDist(configTemplate
, False)
62 def testInvalidParam(self
):
64 CheckConfig: Invalid parameter
69 self
.tryDNSDist(configTemplate
, False)
71 def testSyntaxError(self
):
73 CheckConfig: Syntax error
75 configTemplate
= "blablabla"
76 self
.tryDNSDist(configTemplate
, False)