11from testscenarios import TestWithScenarios
22from unittest import TestCase
3+
34try :
45 from unittest .mock import patch
56except ImportError :
67 from mock import patch
78import dns .resolver
89from pyisemail import is_email
9- from pyisemail .diagnosis import BaseDiagnosis , DNSDiagnosis
10+ from pyisemail .diagnosis import (
11+ BaseDiagnosis ,
12+ DNSDiagnosis ,
13+ GTLDDiagnosis ,
14+ ValidDiagnosis ,
15+ )
1016from tests .validators import create_diagnosis , get_scenarios
1117
1218
1319class IsEmailTest (TestWithScenarios ):
1420
1521 scenarios = get_scenarios ("tests.xml" )
16- threshold = BaseDiagnosis .CATEGORIES [' THRESHOLD' ]
22+ threshold = BaseDiagnosis .CATEGORIES [" THRESHOLD" ]
1723
1824 def test_without_diagnosis (self ):
1925 result = is_email (self .address )
@@ -22,8 +28,10 @@ def test_without_diagnosis(self):
2228 self .assertEqual (
2329 result ,
2430 expected ,
25- ("%s (%s): Got %s, but expected %s."
26- % (self .id , self .address , result , expected ))
31+ (
32+ "%s (%s): Got %s, but expected %s."
33+ % (self .id , self .address , result , expected )
34+ ),
2735 )
2836
2937 def test_with_diagnosis (self ):
@@ -33,20 +41,33 @@ def test_with_diagnosis(self):
3341 self .assertEqual (
3442 result ,
3543 expected ,
36- ("%s (%s): Got %s, but expected %s."
37- % (self .id , self .address , result , expected ))
44+ (
45+ "%s (%s): Got %s, but expected %s."
46+ % (self .id , self .address , result , expected )
47+ ),
3848 )
3949
4050
41- @patch (' dns.resolver.query' , side_effect = dns .resolver .NoAnswer )
51+ @patch (" dns.resolver.query" , side_effect = dns .resolver .NoAnswer )
4252class CheckDNSFailureTestCase (TestCase ):
43-
4453 def test_without_diagnosis (self , mocked_method ):
45- result = is_email (' test@example.com' , check_dns = True )
54+ result = is_email (" test@example.com" , check_dns = True )
4655 expected = False
4756 self .assertEqual (result , expected )
4857
4958 def test_with_diagnosis (self , mocked_method ):
50- result = is_email (' test@example.com' , check_dns = True , diagnose = True )
51- expected = DNSDiagnosis (' NO_RECORD' )
59+ result = is_email (" test@example.com" , check_dns = True , diagnose = True )
60+ expected = DNSDiagnosis (" NO_RECORD" )
5261 self .assertEqual (result , expected )
62+
63+
64+ class GTLDTest (TestCase ):
65+ def test_with_diagnosis (self ):
66+ self .assertTrue (is_email ("a@b" ))
67+ self .assertFalse (is_email ("a@b" , allow_gtld = False ))
68+
69+ def test_without_diagnosis (self ):
70+ self .assertEqual (is_email ("a@b" , diagnose = True ), ValidDiagnosis ())
71+ self .assertEqual (
72+ is_email ("a@b" , allow_gtld = False , diagnose = True ), GTLDDiagnosis ("GTLD" )
73+ )
0 commit comments