From 6f4d4ddb1c9d00cdb0dd4f41f49b9db6be1b985c Mon Sep 17 00:00:00 2001 From: Colin Vidal Date: Thu, 23 Oct 2025 10:54:32 +0200 Subject: [PATCH] test rndc showzone works for named.conf zones Since the zone now has a reference to their respective configuration tree, `rndc showzone` can be used for any zones (including those defined in namedconf), without `allow-new-zones` being enabled. Add a test for this. The test is part of the addzone suite because showzone used to be related to addzone, but this could be moved elsewhere in the future if more specific tests are needed for showzone. --- .../ns1/{named.conf.in => named.conf.j2} | 5 +++ bin/tests/system/addzone/setup.sh | 1 - .../system/addzone/tests_showzone_static.py | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) rename bin/tests/system/addzone/ns1/{named.conf.in => named.conf.j2} (88%) create mode 100644 bin/tests/system/addzone/tests_showzone_static.py diff --git a/bin/tests/system/addzone/ns1/named.conf.in b/bin/tests/system/addzone/ns1/named.conf.j2 similarity index 88% rename from bin/tests/system/addzone/ns1/named.conf.in rename to bin/tests/system/addzone/ns1/named.conf.j2 index 30731c46a6..c3302760ae 100644 --- a/bin/tests/system/addzone/ns1/named.conf.in +++ b/bin/tests/system/addzone/ns1/named.conf.j2 @@ -10,6 +10,7 @@ * See the COPYRIGHT file distributed with this work for additional * information regarding copyright ownership. */ +{% set allownewzones = allownewzones | default(True) %} key rndc_key { secret "1234abcd8765"; @@ -27,7 +28,11 @@ options { listen-on-v6 { none; }; allow-transfer { any; }; allow-query { any; }; +{% if allownewzones %} allow-new-zones yes; +{% else %} + allow-new-zones no; +{% endif %} recursion no; dnssec-validation no; }; diff --git a/bin/tests/system/addzone/setup.sh b/bin/tests/system/addzone/setup.sh index b2227c16b2..b6e778f629 100644 --- a/bin/tests/system/addzone/setup.sh +++ b/bin/tests/system/addzone/setup.sh @@ -17,7 +17,6 @@ cp -f ns1/redirect.db.1 ns1/redirect.db cp -f ns2/redirect.db.1 ns2/redirect.db cp -f ns3/redirect.db.1 ns3/redirect.db -copy_setports ns1/named.conf.in ns1/named.conf copy_setports ns2/named1.conf.in ns2/named.conf copy_setports ns3/named1.conf.in ns3/named.conf diff --git a/bin/tests/system/addzone/tests_showzone_static.py b/bin/tests/system/addzone/tests_showzone_static.py new file mode 100644 index 0000000000..6edaa497f6 --- /dev/null +++ b/bin/tests/system/addzone/tests_showzone_static.py @@ -0,0 +1,31 @@ +# Copyright (C) Internet Systems Consortium, Inc. ("ISC") +# +# SPDX-License-Identifier: MPL-2.0 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at https://mozilla.org/MPL/2.0/. +# +# See the COPYRIGHT file distributed with this work for additional +# information regarding copyright ownership. + +import pytest + + +# Test that `rndc showzone` can print any zone, including those statically +# defined in named.conf, and not only those added dynamically. +@pytest.mark.parametrize( + "allow", + [ + pytest.param(True, id="allow-new-zones-yes"), + pytest.param(False, id="allow-new-zones-no"), + ], +) +def test_showzone_static(ns1, templates, allow): + templates.render("ns1/named.conf", {"allownewzones": allow}) + ns1.rndc("reload", log=False) + zoneconfig = ns1.rndc("showzone inlinesec.example", log=False) + assert ( + zoneconfig + == 'zone "inlinesec.example" { type primary; file "inlinesec.db"; };\n' + )