From 2f97258d358edc79da49bebf5808f84e9b44596e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0pa=C4=8Dek?= Date: Wed, 7 May 2025 15:45:24 +0200 Subject: [PATCH] Test also with subdomains of existing names Composite strategy makes sure we always test with a subdomain of an existing name. (cherry picked from commit 84ad35e7affd1c17e29721a3d84e283642cf6af2) --- bin/tests/system/dnssec/tests_nsec3.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/bin/tests/system/dnssec/tests_nsec3.py b/bin/tests/system/dnssec/tests_nsec3.py index 3c4efafcfb..1a7dbe71ee 100755 --- a/bin/tests/system/dnssec/tests_nsec3.py +++ b/bin/tests/system/dnssec/tests_nsec3.py @@ -158,6 +158,27 @@ def check_nsec3_covers(name: dns.name.Name, response: dns.message.Message) -> No # @given(name=just(dns.name.from_text(f"\000.\001.{SUFFIX}"))) # @given(name=just(dns.name.from_text(f"a.wild.{SUFFIX}"))) def test_dnssec_nsec3_nxdomain(server, name: dns.name.Name, named_port: int) -> None: + noqname_test(server, name, named_port) + + +@strategies.composite +def generate_subdomain_of_existing_name(draw): + existing = draw(strategies.sampled_from(sorted(KNOWN_NAMES))) + subdomain = draw(isctest.hypothesis.strategies.dns_names(suffix=existing)) + return subdomain + + +@pytest.mark.parametrize( + "server", [pytest.param(AUTH, id="ns3"), pytest.param(RESOLVER, id="ns4")] +) +@given(name=generate_subdomain_of_existing_name()) +def test_dnssec_nsec3_subdomain_nxdomain( + server, name: dns.name.Name, named_port: int +) -> None: + noqname_test(server, name, named_port) + + +def noqname_test(server, name: dns.name.Name, named_port: int) -> None: # Name must not exist. assume(name not in KNOWN_NAMES)