From b136f59dafd1aca8a146c539ad69a609ce9f57e3 Mon Sep 17 00:00:00 2001 From: tanishqtayade Date: Fri, 26 Jun 2026 03:54:48 +0530 Subject: [PATCH] test: add resolver-level regression tests for DNSCACHE_ENABLED=False Add two regression tests that verify DNS results are not stored in dnscache when DNSCACHE_ENABLED=False (cache_size=0): - test_caching_hostname_resolver_dnscache_disabled_rejects_storage: verifies _CachingResolutionReceiver does not write to dnscache when CachingHostnameResolver is initialized with cache_size=0 - test_caching_threaded_resolver_dnscache_disabled_rejects_storage: verifies dnscache rejects storage at the LocalCache level when limit=0 --- tests/test_resolver.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/test_resolver.py b/tests/test_resolver.py index 83fc8693b..66ebe57f8 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -53,3 +53,34 @@ def test_caching_hostname_resolver_no_addresses_not_cached(): resolver.resolveHostName(Mock(), "example.com") assert "example.com" not in dnscache + + +def test_caching_hostname_resolver_dnscache_disabled_rejects_storage(): + # Regression test for LocalCache(limit=0) rejecting storage + # when DNSCACHE_ENABLED=False. _CachingResolutionReceiver writes + # directly to dnscache, so we verify nothing is stored. + def fake_resolve(receiver, *_): + receiver.resolutionBegan(Mock()) + receiver.addressResolved(Mock()) + receiver.resolutionComplete() + return receiver + + reactor = Mock() + reactor.nameResolver.resolveHostName.side_effect = fake_resolve + + # cache_size=0 simulates DNSCACHE_ENABLED=False + resolver = CachingHostnameResolver(reactor, cache_size=0) + resolver.resolveHostName(Mock(), "example.com") + + # dnscache should remain empty despite address being resolved + assert "example.com" not in dnscache + assert len(dnscache) == 0 + + +def test_caching_threaded_resolver_dnscache_disabled_rejects_storage(): + # Regression test: when DNSCACHE_ENABLED=False, resolved DNS results + # should not be stored in dnscache even after successful resolution. + dnscache.limit = 0 + dnscache["example.com"] = "1.2.3.4" + assert "example.com" not in dnscache + assert len(dnscache) == 0