2424import ssl
2525
2626try :
27- from http .server import HTTPServer , BaseHTTPRequestHandler
27+ from http .server import HTTPServer
2828 from http .server import SimpleHTTPRequestHandler
2929except ImportError :
30- from BaseHTTPServer import HTTPServer , BaseHTTPRequestHandler
30+ from BaseHTTPServer import HTTPServer
3131 from SimpleHTTPServer import SimpleHTTPRequestHandler
3232
3333from threading import Thread
@@ -100,15 +100,21 @@ def _handle_request(handler):
100100
101101 authorization = handler .headers .get ('Authorization' )
102102 if authorization != "Bearer %s" % self .TOKEN :
103+ data = '401 - Unauthorized' .encode ('utf-8' )
104+
103105 handler .send_response (401 )
104- handler .wfile .write ('' )
106+ handler .send_header ('Content-Length' , len (data ))
107+ handler .end_headers ()
108+ handler .wfile .write ()
105109 else :
110+ data = body .encode ('utf-8' )
111+
106112 sleep (delay )
107113 handler .send_response (code )
108114 handler .send_header ('Content-Type' , 'application/xml' )
115+ handler .send_header ('Content-Length' , len (data ))
109116 handler .end_headers ()
110117
111- data = body .encode ('utf-8' )
112118 handler .wfile .write (data )
113119
114120 TestHandler .handlers [
@@ -117,21 +123,27 @@ def _handle_request(handler):
117123
118124 def set_json_response (self , path , code , body ):
119125 def _handle_request (handler ):
126+ data = json .dumps (body , ensure_ascii = False ).encode ('utf-8' )
127+
120128 handler .send_response (code )
121129 handler .send_header ('Content-Type' , 'application/json' )
130+ handler .send_header ('Content-Length' , len (data ))
122131 handler .end_headers ()
123132
124- data = json .dumps (body , ensure_ascii = False ).encode ('utf-8' )
125133 handler .wfile .write (data )
126134
127135 TestHandler .handlers [path ] = _handle_request
128136
129137 def start_server (self , host = 'localhost' ):
130138 self ._httpd = HTTPServer ((self .host (), self .port ()), TestHandler )
131- self . _httpd . socket = ssl .wrap_socket (
132- self . _httpd . socket ,
133- keyfile = self . __absolute_path ( '%s.key' % host ),
139+ context = ssl .SSLContext ( ssl . PROTOCOL_TLS_SERVER )
140+ context . minimum_version = ssl . TLSVersion . TLSv1_2
141+ context . load_cert_chain (
134142 certfile = self .__absolute_path ('%s.crt' % host ),
143+ keyfile = self .__absolute_path ('%s.key' % host )
144+ )
145+ self ._httpd .socket = context .wrap_socket (
146+ self ._httpd .socket ,
135147 server_side = True
136148 )
137149 # Path handler for username/password authentication service:
@@ -168,7 +180,7 @@ def port(self):
168180 try :
169181 server = HTTPServer (
170182 (self .host (), port ),
171- BaseHTTPRequestHandler
183+ TestHandler
172184 )
173185 self .PORT = port
174186 break
0 commit comments