]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
tests: dnssec validate event
authorLibor Peltan <libor.peltan@nic.cz>
Fri, 22 Dec 2023 13:59:44 +0000 (14:59 +0100)
committerDaniel Salzman <daniel.salzman@nic.cz>
Tue, 2 Jan 2024 13:31:22 +0000 (14:31 +0100)
tests-extra/tests/dnssec/validate_event/test.py [new file with mode: 0644]

diff --git a/tests-extra/tests/dnssec/validate_event/test.py b/tests-extra/tests/dnssec/validate_event/test.py
new file mode 100644 (file)
index 0000000..35b7e97
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+
+'''Test for DNSSEC validation event'''
+
+from dnstest.test import Test
+from dnstest.utils import *
+
+def dig_multi(server, zones, exp_rcode):
+    for z in zones:
+        resp = server.dig(z.name, "DNSKEY", dnssec=True)
+        resp.check(rcode=exp_rcode)
+
+t = Test()
+
+master = t.server("knot")
+slave = t.server("knot")
+zones = t.zone("example.")
+
+t.link(zones, master, slave, ixfr=True, ddns=True)
+
+for z in zones:
+    master.dnssec(z).enable = True
+    master.dnssec(z).rrsig_lifetime = 10
+    master.dnssec(z).rrsig_refresh = 1
+    master.dnssec(z).rrsig_prerefresh = 1
+
+t.start()
+
+# SCENARIO I -- manual knotc zone-validate
+serials = slave.zones_wait(zones)
+serials = slave.zones_wait(zones, serials) # wait for first zone re-sign to demonstrate normal operation
+master.stop()
+slave.ctl("zone-validate", wait=True)
+dig_multi(slave, zones, "NOERROR")
+t.sleep(master.dnssec(z).rrsig_lifetime)
+try:
+    slave.ctl("zone-validate", wait=True)
+    set_err("EXPIRED NOT FAILED")
+except:
+    pass
+dig_multi(slave, zones, "SERVFAIL")
+
+# SCENARIO II -- configured  dnssec-validation
+master.start()
+slave.stop()
+for z in zones:
+    slave.dnssec(z).validate = True
+slave.gen_confile()
+slave.start()
+serials = slave.zones_wait(zones, serials)
+serials = slave.zones_wait(zones, serials) # wait for first zone re-sign to demonstrate normal operation
+master.stop()
+dig_multi(slave, zones, "NOERROR")
+t.sleep(master.dnssec(z).rrsig_lifetime + 1)
+dig_multi(slave, zones, "SERVFAIL")
+
+t.end()