2020import unittest
2121import unittest .mock
2222import urllib .parse
23+ import warnings
2324import weakref
2425
2526import asyncpg
@@ -1144,7 +1145,7 @@ def check():
11441145
11451146 @unittest .skipIf (os .environ .get ('PGHOST' ), 'unmanaged cluster' )
11461147 async def test_connection_ssl_to_no_ssl_server (self ):
1147- ssl_context = ssl .SSLContext (ssl .PROTOCOL_SSLv23 )
1148+ ssl_context = ssl .SSLContext (ssl .PROTOCOL_TLS_CLIENT )
11481149 ssl_context .load_verify_locations (SSL_CA_CERT_FILE )
11491150
11501151 with self .assertRaisesRegex (ConnectionError , 'rejected SSL' ):
@@ -1268,7 +1269,7 @@ def _add_hba_entry(self):
12681269 auth_method = 'trust' )
12691270
12701271 async def test_ssl_connection_custom_context (self ):
1271- ssl_context = ssl .SSLContext (ssl .PROTOCOL_SSLv23 )
1272+ ssl_context = ssl .SSLContext (ssl .PROTOCOL_TLS_CLIENT )
12721273 ssl_context .load_verify_locations (SSL_CA_CERT_FILE )
12731274
12741275 con = await self .connect (
@@ -1360,7 +1361,7 @@ async def test_ssl_connection_default_context(self):
13601361 self .loop .set_exception_handler (old_handler )
13611362
13621363 async def test_ssl_connection_pool (self ):
1363- ssl_context = ssl .SSLContext (ssl .PROTOCOL_SSLv23 )
1364+ ssl_context = ssl .SSLContext (ssl .PROTOCOL_TLS_CLIENT )
13641365 ssl_context .load_verify_locations (SSL_CA_CERT_FILE )
13651366
13661367 pool = await self .create_pool (
@@ -1385,7 +1386,7 @@ async def worker():
13851386 await pool .close ()
13861387
13871388 async def test_executemany_uvloop_ssl_issue_700 (self ):
1388- ssl_context = ssl .SSLContext (ssl .PROTOCOL_SSLv23 )
1389+ ssl_context = ssl .SSLContext (ssl .PROTOCOL_TLS_CLIENT )
13891390 ssl_context .load_verify_locations (SSL_CA_CERT_FILE )
13901391
13911392 con = await self .connect (
@@ -1417,38 +1418,46 @@ async def test_tls_version(self):
14171418
14181419 # XXX: uvloop artifact
14191420 old_handler = self .loop .get_exception_handler ()
1420- try :
1421- self .loop .set_exception_handler (lambda * args : None )
1422- with self .assertRaisesRegex (ssl .SSLError , 'protocol version' ):
1423- await self .connect (
1424- dsn = 'postgresql://ssl_user@localhost/postgres'
1425- '?sslmode=require&ssl_min_protocol_version=TLSv1.3'
1426- )
1427- with self .assertRaises (ssl .SSLError ):
1428- await self .connect (
1429- dsn = 'postgresql://ssl_user@localhost/postgres'
1430- '?sslmode=require'
1431- '&ssl_min_protocol_version=TLSv1.1'
1432- '&ssl_max_protocol_version=TLSv1.1'
1433- )
1434- with self .assertRaisesRegex (ssl .SSLError , 'no protocols' ):
1435- await self .connect (
1421+
1422+ with warnings .catch_warnings ():
1423+ warnings .filterwarnings (
1424+ "ignore" ,
1425+ message = "ssl.TLSVersion.TLSv1_1 is deprecated" ,
1426+ category = DeprecationWarning
1427+ )
1428+ try :
1429+ self .loop .set_exception_handler (lambda * args : None )
1430+ with self .assertRaisesRegex (ssl .SSLError , 'protocol version' ):
1431+ await self .connect (
1432+ dsn = 'postgresql://ssl_user@localhost/postgres'
1433+ '?sslmode=require&ssl_min_protocol_version=TLSv1.3'
1434+ )
1435+ with self .assertRaises (ssl .SSLError ):
1436+ await self .connect (
1437+ dsn = 'postgresql://ssl_user@localhost/postgres'
1438+ '?sslmode=require'
1439+ '&ssl_min_protocol_version=TLSv1.1'
1440+ '&ssl_max_protocol_version=TLSv1.1'
1441+ )
1442+ with self .assertRaisesRegex (ssl .SSLError , 'no protocols' ):
1443+ await self .connect (
1444+ dsn = 'postgresql://ssl_user@localhost/postgres'
1445+ '?sslmode=require'
1446+ '&ssl_min_protocol_version=TLSv1.2'
1447+ '&ssl_max_protocol_version=TLSv1.1'
1448+ )
1449+ con = await self .connect (
14361450 dsn = 'postgresql://ssl_user@localhost/postgres'
14371451 '?sslmode=require'
14381452 '&ssl_min_protocol_version=TLSv1.2'
1439- '&ssl_max_protocol_version=TLSv1.1 '
1453+ '&ssl_max_protocol_version=TLSv1.2 '
14401454 )
1441- con = await self .connect (
1442- dsn = 'postgresql://ssl_user@localhost/postgres?sslmode=require'
1443- '&ssl_min_protocol_version=TLSv1.2'
1444- '&ssl_max_protocol_version=TLSv1.2'
1445- )
1446- try :
1447- self .assertEqual (await con .fetchval ('SELECT 42' ), 42 )
1455+ try :
1456+ self .assertEqual (await con .fetchval ('SELECT 42' ), 42 )
1457+ finally :
1458+ await con .close ()
14481459 finally :
1449- await con .close ()
1450- finally :
1451- self .loop .set_exception_handler (old_handler )
1460+ self .loop .set_exception_handler (old_handler )
14521461
14531462
14541463@unittest .skipIf (os .environ .get ('PGHOST' ), 'unmanaged cluster' )
0 commit comments