]>
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):
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 not None:
21 if dnsdist
.returncode
!= 0 and not shouldBeSuccessful
:
25 def testWorkingConfig(self
):
27 CheckConfig: Working configuration
30 newServer{address="127.0.0.1:53"}
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))
42 print("Blocking *.powerdns.org")
49 self
.tryDNSDist(configTemplate
)
51 def testEmptyConfig(self
):
53 CheckConfig: Empty config
56 self
.tryDNSDist(configTemplate
)
58 def testInvalidFunction(self
):
60 CheckConfig: Invalid function
63 oldServer { address="127.0.0.1:55" }
65 self
.tryDNSDist(configTemplate
, False)
67 def testInvalidParam(self
):
69 CheckConfig: Invalid parameter
72 newServer { address="127.0.0.355" }
74 self
.tryDNSDist(configTemplate
, False)
76 def testSyntaxError(self
):
78 CheckConfig: Syntax error
80 configTemplate
= "blablabla"
81 self
.tryDNSDist(configTemplate
, False)