40
40
_IS_SYNC = False
41
41
42
42
43
- def run_initial_dns_seedlist_discovery_prose_tests (self , test_cases ):
44
- for case in test_cases :
45
- with patch ("dns.resolver.resolve" ) as mock_resolver :
46
-
47
- def mock_resolve (query , record_type , * args , ** kwargs ):
48
- mock_srv = MagicMock ()
49
- mock_srv .target .to_text .return_value = case ["mock_target" ]
50
- return [mock_srv ]
51
-
52
- mock_resolver .side_effect = mock_resolve
53
- domain = case ["query" ].split ("._tcp." )[1 ]
54
- connection_string = f"mongodb+srv://{ domain } "
55
- try :
56
- parse_uri (connection_string )
57
- except ConfigurationError as e :
58
- self .assertIn (case ["expected_error" ], str (e ))
59
- else :
60
- self .fail (f"ConfigurationError was not raised for query: { case ['query' ]} " )
61
-
62
-
63
43
class TestDNSRepl (AsyncPyMongoTestCase ):
64
44
if _IS_SYNC :
65
45
TEST_PATH = os .path .join (
@@ -228,12 +208,31 @@ class TestInitialDnsSeedlistDiscovery(AsyncPyMongoTestCase):
228
208
https://github.com/mongodb/specifications/blob/0a7a8b5/source/initial-dns-seedlist-discovery/tests/README.md#prose-tests
229
209
"""
230
210
231
- def test_1_allow_srv_hosts_with_fewer_than_three_dot_separated_parts (self ):
232
- with patch ("dns.resolver.resolve" ):
233
- parse_uri ("mongodb+srv://localhost/" )
234
- parse_uri ("mongodb+srv://mongo.local/" )
235
-
236
- def test_2_throw_when_return_address_does_not_end_with_srv_domain (self ):
211
+ async def run_initial_dns_seedlist_discovery_prose_tests (self , test_cases ):
212
+ for case in test_cases :
213
+ with patch ("dns.asyncresolver.resolve" ) as mock_resolver :
214
+
215
+ async def mock_resolve (query , record_type , * args , ** kwargs ):
216
+ mock_srv = MagicMock ()
217
+ mock_srv .target .to_text .return_value = case ["mock_target" ]
218
+ return [mock_srv ]
219
+
220
+ mock_resolver .side_effect = mock_resolve
221
+ domain = case ["query" ].split ("._tcp." )[1 ]
222
+ connection_string = f"mongodb+srv://{ domain } "
223
+ try :
224
+ await parse_uri (connection_string )
225
+ except ConfigurationError as e :
226
+ self .assertIn (case ["expected_error" ], str (e ))
227
+ else :
228
+ self .fail (f"ConfigurationError was not raised for query: { case ['query' ]} " )
229
+
230
+ async def test_1_allow_srv_hosts_with_fewer_than_three_dot_separated_parts (self ):
231
+ with patch ("dns.asyncresolver.resolve" ):
232
+ await parse_uri ("mongodb+srv://localhost/" )
233
+ await parse_uri ("mongodb+srv://mongo.local/" )
234
+
235
+ async def test_2_throw_when_return_address_does_not_end_with_srv_domain (self ):
237
236
test_cases = [
238
237
{
239
238
"query" : "_mongodb._tcp.localhost" ,
@@ -251,9 +250,9 @@ def test_2_throw_when_return_address_does_not_end_with_srv_domain(self):
251
250
"expected_error" : "Invalid SRV host" ,
252
251
},
253
252
]
254
- run_initial_dns_seedlist_discovery_prose_tests (self , test_cases )
253
+ await self . run_initial_dns_seedlist_discovery_prose_tests (test_cases )
255
254
256
- def test_3_throw_when_return_address_is_identical_to_srv_hostname (self ):
255
+ async def test_3_throw_when_return_address_is_identical_to_srv_hostname (self ):
257
256
test_cases = [
258
257
{
259
258
"query" : "_mongodb._tcp.localhost" ,
@@ -266,9 +265,9 @@ def test_3_throw_when_return_address_is_identical_to_srv_hostname(self):
266
265
"expected_error" : "Invalid SRV host" ,
267
266
},
268
267
]
269
- run_initial_dns_seedlist_discovery_prose_tests (self , test_cases )
268
+ await self . run_initial_dns_seedlist_discovery_prose_tests (test_cases )
270
269
271
- def test_4_throw_when_return_address_does_not_contain_dot_separating_shared_part_of_domain (
270
+ async def test_4_throw_when_return_address_does_not_contain_dot_separating_shared_part_of_domain (
272
271
self
273
272
):
274
273
test_cases = [
@@ -288,7 +287,7 @@ def test_4_throw_when_return_address_does_not_contain_dot_separating_shared_part
288
287
"expected_error" : "Invalid SRV host" ,
289
288
},
290
289
]
291
- run_initial_dns_seedlist_discovery_prose_tests (self , test_cases )
290
+ await self . run_initial_dns_seedlist_discovery_prose_tests (test_cases )
292
291
293
292
294
293
if __name__ == "__main__" :
0 commit comments