@@ -64,18 +64,20 @@ def start(self):
6464 class TestServerHTTPHandler (http .Request ):
6565 def process (self ):
6666 request = self
67- uri_path = request .uri .decode ()
68- if request_subscribers .get (uri_path ):
69- request_subscribers [uri_path ].set_result (request )
70- request_subscribers .pop (uri_path )
71-
72- if auth .get (uri_path ):
67+ self .post_body = request .content .read ().decode ()
68+ request .content .seek (0 , 0 )
69+ uri = request .uri .decode ()
70+ if request_subscribers .get (uri ):
71+ request_subscribers [uri ].set_result (request )
72+ request_subscribers .pop (uri )
73+
74+ if auth .get (uri ):
7375 authorization_header = request .requestHeaders .getRawHeaders (
7476 "authorization"
7577 )
7678 creds_correct = False
7779 if authorization_header :
78- creds_correct = auth .get (uri_path ) == (
80+ creds_correct = auth .get (uri ) == (
7981 request .getUser (),
8082 request .getPassword (),
8183 )
@@ -86,21 +88,21 @@ def process(self):
8688 request .setResponseCode (HTTPStatus .UNAUTHORIZED )
8789 request .finish ()
8890 return
89- if csp .get (uri_path ):
90- request .setHeader (b"Content-Security-Policy" , csp [uri_path ])
91- if routes .get (uri_path ):
92- routes [uri_path ](request )
91+ if csp .get (uri ):
92+ request .setHeader (b"Content-Security-Policy" , csp [uri ])
93+ if routes .get (uri ):
94+ routes [uri ](request )
9395 return
9496 file_content = None
9597 try :
9698 file_content = open (
97- os .path .join (static_path , uri_path [1 :]), "rb"
99+ os .path .join (static_path , request . path . decode () [1 :]), "rb"
98100 ).read ()
99101 except (FileNotFoundError , IsADirectoryError ):
100102 request .setResponseCode (HTTPStatus .NOT_FOUND )
101103 if file_content :
102- request .setHeader ("Content-Type" , mimetypes .guess_type (uri_path )[0 ])
103- if uri_path in gzip_routes :
104+ request .setHeader ("Content-Type" , mimetypes .guess_type (uri )[0 ])
105+ if uri in gzip_routes :
104106 request .setHeader ("Content-Encoding" , "gzip" )
105107 request .write (gzip .compress (file_content ))
106108 else :
@@ -125,6 +127,8 @@ def stop(self):
125127 self .thread .join ()
126128
127129 async def wait_for_request (self , path ):
130+ if path in self .request_subscribers :
131+ return await self .request_subscribers [path ]
128132 future = asyncio .Future ()
129133 self .request_subscribers [path ] = future
130134 return await future
0 commit comments