Skip to content

Commit 860cd9a

Browse files
committed
Add TLS version test
1 parent e12fb6d commit 860cd9a

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

tests/test_connect.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,8 @@ def get_server_settings(cls):
12131213
'ssl_cert_file': SSL_CERT_FILE,
12141214
'ssl_key_file': SSL_KEY_FILE,
12151215
'ssl_ca_file': CLIENT_CA_CERT_FILE,
1216+
'ssl_min_protocol_version': 'TLSv1.2',
1217+
'ssl_max_protocol_version': 'TLSv1.2',
12161218
})
12171219

12181220
return conf
@@ -1408,6 +1410,42 @@ async def test_executemany_uvloop_ssl_issue_700(self):
14081410
finally:
14091411
await con.close()
14101412

1413+
async def test_tls_version(self):
1414+
# XXX: uvloop artifact
1415+
old_handler = self.loop.get_exception_handler()
1416+
try:
1417+
self.loop.set_exception_handler(lambda *args: None)
1418+
with self.assertRaisesRegex(ssl.SSLError, 'protocol version'):
1419+
await self.connect(
1420+
dsn='postgresql://ssl_user@localhost/postgres'
1421+
'?sslmode=require&ssl_min_protocol_version=TLSv1.3'
1422+
)
1423+
with self.assertRaisesRegex(ssl.SSLError, 'protocol version'):
1424+
await self.connect(
1425+
dsn='postgresql://ssl_user@localhost/postgres'
1426+
'?sslmode=require'
1427+
'&ssl_min_protocol_version=TLSv1.1'
1428+
'&ssl_max_protocol_version=TLSv1.1'
1429+
)
1430+
with self.assertRaisesRegex(ssl.SSLError, 'no protocols'):
1431+
await self.connect(
1432+
dsn='postgresql://ssl_user@localhost/postgres'
1433+
'?sslmode=require'
1434+
'&ssl_min_protocol_version=TLSv1.2'
1435+
'&ssl_max_protocol_version=TLSv1.1'
1436+
)
1437+
con = await self.connect(
1438+
dsn='postgresql://ssl_user@localhost/postgres?sslmode=require'
1439+
'&ssl_min_protocol_version=TLSv1.2'
1440+
'&ssl_max_protocol_version=TLSv1.2'
1441+
)
1442+
try:
1443+
self.assertEqual(await con.fetchval('SELECT 42'), 42)
1444+
finally:
1445+
await con.close()
1446+
finally:
1447+
self.loop.set_exception_handler(old_handler)
1448+
14111449

14121450
@unittest.skipIf(os.environ.get('PGHOST'), 'unmanaged cluster')
14131451
class TestClientSSLConnection(BaseTestSSLConnection):

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy