diff --git a/src/utils.py b/src/utils.py index c6c5399..d7bb1c7 100644 --- a/src/utils.py +++ b/src/utils.py @@ -28,7 +28,12 @@ def get_domain_policy_record( res = resolver or dns.resolver.get_default_resolver() try: txt_records = res.resolve(qname=name, rdtype=RdataType.TXT, lifetime=timeout) - except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN, dns.resolver.LifetimeTimeout) as e: + except ( + dns.resolver.NoAnswer, + dns.resolver.NXDOMAIN, + dns.resolver.LifetimeTimeout, + dns.resolver.NoNameservers, + ) as e: raise DomainPolicyError('Domain policy record not found') from e for record in txt_records: record_text = ''.join(a.decode('utf-8') for a in record.strings) diff --git a/tests/test_utils.py b/tests/test_utils.py index 2f0f9c8..7099337 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -54,6 +54,15 @@ def raise_timeout(*_args: object, **_kwargs: object) -> None: get_domain_policy_record('example.com', 'v=spf1', resolver=dns.resolver.Resolver(), timeout=1) +def test_get_domain_policy_record_no_nameservers(monkeypatch: pytest.MonkeyPatch) -> None: + def raise_no_nameservers(*_args: object, **_kwargs: object) -> None: + raise dns.resolver.NoNameservers() + + monkeypatch.setattr(dns.resolver.Resolver, 'resolve', raise_no_nameservers) + with pytest.raises(DomainPolicyError): + get_domain_policy_record('example.com', 'v=spf1', resolver=dns.resolver.Resolver(), timeout=1) + + def test_get_domain_policy_record_no_matching_marker() -> None: mock_record = MagicMock() mock_record.strings = [b'some-other-txt-record']