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.
This commit is contained in:
Colin Vidal 2025-10-23 10:54:32 +02:00 committed by Evan Hunt
parent 6b5246b3d2
commit 6f4d4ddb1c
3 changed files with 36 additions and 1 deletions

View file

@ -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;
};

View file

@ -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

View file

@ -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'
)