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