3131import unittest
3232from test import support
3333from test .support import (
34- is_apple , os_helper , requires_subprocess , threading_helper
34+ is_apple , os_helper , requires_subprocess , threading_helper , import_helper
3535)
3636
3737try :
@@ -68,6 +68,15 @@ def create_https_server(
6868 )
6969
7070
71+ class TestSSLDisabled (unittest .TestCase ):
72+ def test_https_server_raises_runtime_error (self ):
73+ with import_helper .isolated_modules ():
74+ sys .modules ['ssl' ] = None
75+ certfile = certdata_file ("keycert.pem" )
76+ with self .assertRaises (RuntimeError ):
77+ create_https_server (certfile )
78+
79+
7180class TestServerThread (threading .Thread ):
7281 def __init__ (self , test_object , request_handler , tls = None ):
7382 threading .Thread .__init__ (self )
@@ -77,12 +86,10 @@ def __init__(self, test_object, request_handler, tls=None):
7786
7887 def run (self ):
7988 if self .tls :
80- self .server = HTTPSServer (
81- ('localhost' , 0 ),
82- self .request_handler ,
83- certfile = self .tls [0 ],
84- keyfile = self .tls [1 ],
85- password = self .tls [2 ],
89+ certfile , keyfile , password = self .tls
90+ self .server = create_https_server (
91+ certfile , keyfile , password ,
92+ request_handler = self .request_handler ,
8693 )
8794 else :
8895 self .server = HTTPServer (('localhost' , 0 ), self .request_handler )
@@ -393,7 +400,9 @@ def test_valid_certdata(self):
393400 (self .ONLYCERT , self .ONLYKEY_PROTECTED , self .KEY_PASSWORD ),
394401 ]
395402 for certfile , keyfile , password in valid_certdata :
396- with self .subTest (certfile = certfile , keyfile = keyfile ):
403+ with self .subTest (certfile = certfile ,
404+ keyfile = keyfile ,
405+ password = password ):
397406 server = create_https_server (certfile , keyfile , password )
398407 self .assertIsInstance (server , HTTPSServer )
399408 server .server_close ()
@@ -408,7 +417,9 @@ def test_invalid_certdata(self):
408417 (self .CERTFILE_PROTECTED , None , self .BADPASSWORD ),
409418 ]
410419 for certfile , keyfile , password in invalid_certdata :
411- with self .subTest (certfile = certfile , keyfile = keyfile ):
420+ with self .subTest (certfile = certfile ,
421+ keyfile = keyfile ,
422+ password = password ):
412423 with self .assertRaises (ssl .SSLError ):
413424 create_https_server (certfile , keyfile , password )
414425
0 commit comments