Skip to content

Commit 80989b8

Browse files
committed
Fix Python 3.12 SSL compatibility in test server - replace deprecated ssl.wrap_socket with modern ssl.SSLContext
1 parent f1edd2d commit 80989b8

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

tests/server.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,18 @@
33
except ImportError:
44
from http.server import BaseHTTPRequestHandler, HTTPServer
55

6-
from functools import wraps
76
from random import randint
87
import json
98
import ssl
109
import time
1110
import threading
1211
import unittest
1312

14-
def sslwrap(func):
15-
@wraps(func)
16-
def bar(*args, **kw):
17-
kw['ssl_version'] = ssl.PROTOCOL_SSLv23
18-
return func(*args, **kw)
19-
return bar
13+
def create_ssl_context():
14+
"""Create SSL context for Python 3.12+ compatibility"""
15+
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
16+
context.minimum_version = ssl.TLSVersion.TLSv1_2
17+
return context
2018

2119
request_counts = dict()
2220

@@ -75,12 +73,11 @@ class HTTPSTestCase(unittest.TestCase):
7573
def setUpClass(cls):
7674
# create a server
7775
cls.server = HTTPServer(("localhost", 0), Handler)
78-
# hack needed to setup ssl server
79-
ssl.wrap_socket = sslwrap(ssl.wrap_socket)
76+
# create SSL context for Python 3.12+ compatibility
77+
context = create_ssl_context()
78+
context.load_cert_chain('./tests/server.pem')
8079
# upgrade to https
81-
cls.server.socket = ssl.wrap_socket(cls.server.socket,
82-
certfile='./tests/server.pem',
83-
server_side=True)
80+
cls.server.socket = context.wrap_socket(cls.server.socket, server_side=True)
8481
# start server instance in new thread
8582
cls.server_thread = threading.Thread(target=cls.server.serve_forever)
8683
cls.server_thread.start()

0 commit comments

Comments
 (0)