]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_CheckConfig.py
7 class TestCheckConfig(unittest
.TestCase
):
10 def tryDNSDist(configTemplate
, shouldBeSuccessful
=True):
11 conffile
= 'dnsdist_test.conf'
12 with
open(conffile
, 'w') as conf
:
13 conf
.write("-- Autogenerated by dnsdisttests.py\n")
14 conf
.write(configTemplate
)
16 dnsdistcmd
= [os
.environ
['DNSDISTBIN'], '-C', conffile
, '--check-config']
18 with
open(os
.devnull
, 'w') as fdDevNull
:
19 dnsdist
= subprocess
.Popen(dnsdistcmd
, close_fds
=True, stdout
=fdDevNull
)
21 if dnsdist
.poll() is not None:
22 if dnsdist
.returncode
!= 0 and not shouldBeSuccessful
:
26 def testWorkingConfig(self
):
28 CheckConfig: Working configuration
31 newServer{address="127.0.0.1:53"}
34 addAction(RegexRule("evil[0-9]{4,}\\\\.regex\\\\.tests\\\\.powerdns\\\\.com$"), RCodeAction(5))
35 mySMN = newSuffixMatchNode()
36 mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com."))
37 addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(4))
38 addAction(makeRule("drop.test.powerdns.com."), DropAction())
39 block=newDNSName("powerdns.org.")
40 function blockFilter(dq)
41 if(dq.qname:isPartOf(block))
43 print("Blocking *.powerdns.org")
50 self
.tryDNSDist(configTemplate
)
52 def testEmptyConfig(self
):
54 CheckConfig: Empty config
57 self
.tryDNSDist(configTemplate
)
59 def testInvalidFunction(self
):
61 CheckConfig: Invalid function
64 oldServer { address="127.0.0.1:55" }
66 self
.tryDNSDist(configTemplate
, False)
68 def testInvalidParam(self
):
70 CheckConfig: Invalid parameter
73 newServer { address="127.0.0.355" }
75 self
.tryDNSDist(configTemplate
, False)
77 def testSyntaxError(self
):
79 CheckConfig: Syntax error
81 configTemplate
= "blablabla"
82 self
.tryDNSDist(configTemplate
, False)