Skip to content

Commit 229db4f

Browse files
Replace resolver.query with resolver.resolve (#19)
The older API is now deprecated. The new API requires v2.0.0+ so we need to bump the dependency as well. This will necessitate formally dropping support for Python 2 since dnspython 2 doesn't support it. Co-authored-by: Michael Herold <opensource@michaeljherold.com>
1 parent 7b8aaed commit 229db4f

4 files changed

Lines changed: 26 additions & 26 deletions

File tree

pyisemail/validators/dns_validator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import dns.exception
22
import dns.resolver
3+
from dns.rdatatype import MX
34
from pyisemail.diagnosis import DNSDiagnosis, RFC5321Diagnosis, ValidDiagnosis
45

56

@@ -36,7 +37,7 @@ def is_valid(self, domain, diagnose=False):
3637
# we will raise a warning because we didn't immediately find an MX
3738
# record.
3839
try:
39-
dns.resolver.query(domain, "MX")
40+
dns.resolver.resolve(domain, MX)
4041
dns_checked = True
4142
except (dns.resolver.NXDOMAIN, dns.name.NameTooLong):
4243
# Domain can't be found in DNS
@@ -52,8 +53,7 @@ def is_valid(self, domain, diagnose=False):
5253
return_status.append(DNSDiagnosis("NO_MX_RECORD"))
5354

5455
try:
55-
# TODO: See if we can/need to narrow to A / CNAME
56-
dns.resolver.query(domain)
56+
dns.resolver.resolve(domain)
5757
except dns.resolver.NoAnswer:
5858
# No usable records for the domain can be found
5959
return_status.append(DNSDiagnosis("NO_RECORD"))

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def get_version():
4545
exclude_package_data={"": [".gitignore"]},
4646
zip_safe=False,
4747
install_requires=[
48-
"dnspython >= 1.15.0",
48+
"dnspython >= 2.0.0",
4949
],
5050
tests_require=["coverage", "pytest"],
5151
test_suite="tests",

tests/test_is_email.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
GTLDDiagnosis,
99
ValidDiagnosis,
1010
)
11+
1112
from tests.validators import create_diagnosis, get_scenarios
1213

1314
scenarios = get_scenarios("tests.xml")
@@ -45,7 +46,7 @@ def test_with_diagnosis(test_id, address, diagnosis):
4546

4647

4748
def test_dns_without_diagnosis(monkeypatch):
48-
monkeypatch.setattr(dns.resolver, "query", side_effect)
49+
monkeypatch.setattr(dns.resolver, "resolve", side_effect)
4950

5051
result = is_email("test@example.com", check_dns=True)
5152
expected = False
@@ -54,7 +55,7 @@ def test_dns_without_diagnosis(monkeypatch):
5455

5556

5657
def test_dns_with_diagnosis(monkeypatch):
57-
monkeypatch.setattr(dns.resolver, "query", side_effect)
58+
monkeypatch.setattr(dns.resolver, "resolve", side_effect)
5859

5960
result = is_email("test@example.com", check_dns=True, diagnose=True)
6061
expected = DNSDiagnosis("NO_RECORD")

tests/validators/test_dns_validator.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import pytest
21
import dns.name
32
import dns.resolver
3+
import pytest
44
from pyisemail.diagnosis import DNSDiagnosis, RFC5321Diagnosis, ValidDiagnosis
55
from pyisemail.validators import DNSValidator
66

7-
87
is_valid = DNSValidator().is_valid
98

109

@@ -33,108 +32,108 @@ def timeout_side_effect(*_):
3332

3433

3534
def test_working_mx_record_without_diagnosis(monkeypatch):
36-
monkeypatch.setattr(dns.resolver, "query", no_side_effect)
35+
monkeypatch.setattr(dns.resolver, "resolve", no_side_effect)
3736

3837
assert is_valid("example.com")
3938

4039

4140
def test_working_mx_record_with_diagnosis(monkeypatch):
42-
monkeypatch.setattr(dns.resolver, "query", no_side_effect)
41+
monkeypatch.setattr(dns.resolver, "resolve", no_side_effect)
4342

4443
assert is_valid("example.com", diagnose=True) == ValidDiagnosis()
4544

4645

4746
def test_non_existant_mx_record_without_diagnosis(monkeypatch):
48-
monkeypatch.setattr(dns.resolver, "query", nx_domain_side_effect)
47+
monkeypatch.setattr(dns.resolver, "resolve", nx_domain_side_effect)
4948

5049
assert not is_valid("example.com")
5150

5251

5352
def test_non_existant_mx_record_with_diagnosis(monkeypatch):
54-
monkeypatch.setattr(dns.resolver, "query", nx_domain_side_effect)
53+
monkeypatch.setattr(dns.resolver, "resolve", nx_domain_side_effect)
5554

5655
assert is_valid("example.com", diagnose=True) == DNSDiagnosis("NO_RECORD")
5756

5857

5958
def test_domain_too_long_without_diagnosis(monkeypatch):
60-
monkeypatch.setattr(dns.resolver, "query", too_long_side_effect)
59+
monkeypatch.setattr(dns.resolver, "resolve", too_long_side_effect)
6160

6261
assert not is_valid("example.com")
6362

6463

6564
def test_domain_too_long_with_diagnosis(monkeypatch):
66-
monkeypatch.setattr(dns.resolver, "query", too_long_side_effect)
65+
monkeypatch.setattr(dns.resolver, "resolve", too_long_side_effect)
6766

6867
assert is_valid("example.com", diagnose=True) == DNSDiagnosis("NO_RECORD")
6968

7069

7170
def test_no_record_without_diagnosis(monkeypatch):
72-
monkeypatch.setattr(dns.resolver, "query", too_long_side_effect)
71+
monkeypatch.setattr(dns.resolver, "resolve", too_long_side_effect)
7372

7473
assert not is_valid("example.com")
7574

7675

7776
def test_no_record_with_diagnosis(monkeypatch):
78-
monkeypatch.setattr(dns.resolver, "query", too_long_side_effect)
77+
monkeypatch.setattr(dns.resolver, "resolve", too_long_side_effect)
7978

8079
assert is_valid("example.com", diagnose=True) == DNSDiagnosis("NO_RECORD")
8180

8281

8382
def test_no_mx_on_tld_without_diagnosis(monkeypatch):
84-
monkeypatch.setattr(dns.resolver, "query", nx_domain_side_effect)
83+
monkeypatch.setattr(dns.resolver, "resolve", nx_domain_side_effect)
8584

8685
assert not is_valid("com")
8786

8887

8988
def test_no_mx_on_tld_with_diagnosis(monkeypatch):
90-
monkeypatch.setattr(dns.resolver, "query", nx_domain_side_effect)
89+
monkeypatch.setattr(dns.resolver, "resolve", nx_domain_side_effect)
9190

9291
assert is_valid("com", diagnose=True) == DNSDiagnosis("NO_RECORD")
9392

9493

9594
def test_no_records_on_tld_without_diagnosis(monkeypatch):
96-
monkeypatch.setattr(dns.resolver, "query", no_record_side_effect)
95+
monkeypatch.setattr(dns.resolver, "resolve", no_record_side_effect)
9796

9897
assert not is_valid("com")
9998

10099

101100
def test_no_records_on_tld_with_diagnosis(monkeypatch):
102-
monkeypatch.setattr(dns.resolver, "query", no_record_side_effect)
101+
monkeypatch.setattr(dns.resolver, "resolve", no_record_side_effect)
103102

104103
assert is_valid("com", diagnose=True) == RFC5321Diagnosis("TLD")
105104

106105

107106
def test_no_records_on_numeric_tld_without_diagnosis(monkeypatch):
108-
monkeypatch.setattr(dns.resolver, "query", no_record_side_effect)
107+
monkeypatch.setattr(dns.resolver, "resolve", no_record_side_effect)
109108

110109
assert not is_valid("iana.123")
111110

112111

113112
def test_no_records_on_numeric_tld_with_diagnosis(monkeypatch):
114-
monkeypatch.setattr(dns.resolver, "query", no_record_side_effect)
113+
monkeypatch.setattr(dns.resolver, "resolve", no_record_side_effect)
115114

116115
assert is_valid("iana.123", diagnose=True) == RFC5321Diagnosis("TLDNUMERIC")
117116

118117

119118
def test_no_nameservers_respond_without_diagnosis(monkeypatch):
120-
monkeypatch.setattr(dns.resolver, "query", no_ns_side_effect)
119+
monkeypatch.setattr(dns.resolver, "resolve", no_ns_side_effect)
121120

122121
assert not is_valid("example.com")
123122

124123

125124
def test_no_nameservers_respond_with_diagnosis(monkeypatch):
126-
monkeypatch.setattr(dns.resolver, "query", no_ns_side_effect)
125+
monkeypatch.setattr(dns.resolver, "resolve", no_ns_side_effect)
127126

128127
assert is_valid("example.com", diagnose=True) == DNSDiagnosis("NO_NAMESERVERS")
129128

130129

131130
def test_dns_timeout_without_diagnosis(monkeypatch):
132-
monkeypatch.setattr(dns.resolver, "query", timeout_side_effect)
131+
monkeypatch.setattr(dns.resolver, "resolve", timeout_side_effect)
133132

134133
assert not is_valid("example.com")
135134

136135

137136
def test_dns_timeout_with_diagnosis(monkeypatch):
138-
monkeypatch.setattr(dns.resolver, "query", timeout_side_effect)
137+
monkeypatch.setattr(dns.resolver, "resolve", timeout_side_effect)
139138

140139
assert is_valid("example.com", diagnose=True) == DNSDiagnosis("DNS_TIMEDOUT")

0 commit comments

Comments
 (0)