Skip to content

Commit dd7c56d

Browse files
Mikhail KoviazinRafiot
authored andcommitted
tests: fix TLS tests with Python 3.13
This commit adds support for minimum_ssl_version and maximum_ssl_version to `_ValkeyTCPServer` in tests. Previously it was written with `ssl.wrap_socket` in mind which only supported `ssl_version`. `SSLContext` OTOH supports passing both minimum and maximum supported TLS versions. This commit utilizes that. Additionally, TLS version in test_tcp_ssl_version_mismatch was fixed. It was broken since 7783e0b. This change was added there by mistake and in fact didn't change anything for Python 3.12. Instead, it seems to have hidden a bug that revealed itself with Python 3.13. Signed-off-by: Mikhail Koviazin <[email protected]> Signed-off-by: Raphaël Vinot <[email protected]>
1 parent 92137ef commit dd7c56d

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

tests/test_asyncio/test_connect.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ async def test_tcp_ssl_version_mismatch(tcp_address):
125125
tcp_address,
126126
certfile=certfile,
127127
keyfile=keyfile,
128-
ssl_version=ssl.TLSVersion.TLSv1_2,
128+
maximum_ssl_version=ssl.TLSVersion.TLSv1_2,
129129
)
130130
await conn.disconnect()
131131

@@ -135,7 +135,8 @@ async def _assert_connect(
135135
server_address,
136136
certfile=None,
137137
keyfile=None,
138-
ssl_version=None,
138+
minimum_ssl_version=ssl.TLSVersion.TLSv1_2,
139+
maximum_ssl_version=ssl.TLSVersion.TLSv1_3,
139140
):
140141
stop_event = asyncio.Event()
141142
finished = asyncio.Event()
@@ -153,9 +154,8 @@ async def _handler(reader, writer):
153154
elif certfile:
154155
host, port = server_address
155156
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
156-
if ssl_version is not None:
157-
context.minimum_version = ssl_version
158-
context.maximum_version = ssl_version
157+
context.minimum_version = minimum_ssl_version
158+
context.maximum_version = maximum_ssl_version
159159
context.load_cert_chain(certfile=certfile, keyfile=keyfile)
160160
server = await asyncio.start_server(_handler, host=host, port=port, ssl=context)
161161
else:

tests/test_connect.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ def test_tcp_ssl_tls12_custom_ciphers(tcp_address, ssl_ciphers):
100100
tcp_address,
101101
certfile=certfile,
102102
keyfile=keyfile,
103-
ssl_version=ssl.TLSVersion.TLSv1_2,
104103
)
105104

106105

@@ -141,7 +140,7 @@ def test_tcp_ssl_version_mismatch(tcp_address):
141140
tcp_address,
142141
certfile=certfile,
143142
keyfile=keyfile,
144-
ssl_version=ssl.TLSVersion.TLSv1_3,
143+
maximum_ssl_version=ssl.TLSVersion.TLSv1_2,
145144
)
146145

147146

@@ -170,14 +169,16 @@ def __init__(
170169
*args,
171170
certfile=None,
172171
keyfile=None,
173-
ssl_version=ssl.TLSVersion.TLSv1,
172+
minimum_ssl_version=ssl.TLSVersion.TLSv1_2,
173+
maximum_ssl_version=ssl.TLSVersion.TLSv1_3,
174174
**kw,
175175
) -> None:
176176
self._ready_event = threading.Event()
177177
self._stop_requested = False
178178
self._certfile = certfile
179179
self._keyfile = keyfile
180-
self._ssl_version = ssl_version
180+
self._minimum_ssl_version = minimum_ssl_version
181+
self._maximum_ssl_version = maximum_ssl_version
181182
super().__init__(*args, **kw)
182183

183184
def service_actions(self):
@@ -199,7 +200,8 @@ def get_request(self):
199200
newsocket, fromaddr = self.socket.accept()
200201
sslctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
201202
sslctx.load_cert_chain(self._certfile, self._keyfile)
202-
sslctx.minimum_version = self._ssl_version
203+
sslctx.minimum_version = self._minimum_ssl_version
204+
sslctx.maximum_version = self._maximum_ssl_version
203205
connstream = sslctx.wrap_socket(
204206
newsocket,
205207
server_side=True,

0 commit comments

Comments
 (0)