|
3 | 3 | except ImportError: |
4 | 4 | from http.server import BaseHTTPRequestHandler, HTTPServer |
5 | 5 |
|
6 | | -from functools import wraps |
7 | 6 | from random import randint |
8 | 7 | import json |
9 | 8 | import ssl |
10 | 9 | import time |
11 | 10 | import threading |
12 | 11 | import unittest |
13 | 12 |
|
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 |
20 | 18 |
|
21 | 19 | request_counts = dict() |
22 | 20 |
|
@@ -75,12 +73,11 @@ class HTTPSTestCase(unittest.TestCase): |
75 | 73 | def setUpClass(cls): |
76 | 74 | # create a server |
77 | 75 | 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') |
80 | 79 | # 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) |
84 | 81 | # start server instance in new thread |
85 | 82 | cls.server_thread = threading.Thread(target=cls.server.serve_forever) |
86 | 83 | cls.server_thread.start() |
|
0 commit comments