@@ -64,18 +64,20 @@ def start(self):
64
64
class TestServerHTTPHandler (http .Request ):
65
65
def process (self ):
66
66
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 ):
73
75
authorization_header = request .requestHeaders .getRawHeaders (
74
76
"authorization"
75
77
)
76
78
creds_correct = False
77
79
if authorization_header :
78
- creds_correct = auth .get (uri_path ) == (
80
+ creds_correct = auth .get (uri ) == (
79
81
request .getUser (),
80
82
request .getPassword (),
81
83
)
@@ -86,21 +88,21 @@ def process(self):
86
88
request .setResponseCode (HTTPStatus .UNAUTHORIZED )
87
89
request .finish ()
88
90
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 )
93
95
return
94
96
file_content = None
95
97
try :
96
98
file_content = open (
97
- os .path .join (static_path , uri_path [1 :]), "rb"
99
+ os .path .join (static_path , request . path . decode () [1 :]), "rb"
98
100
).read ()
99
101
except (FileNotFoundError , IsADirectoryError ):
100
102
request .setResponseCode (HTTPStatus .NOT_FOUND )
101
103
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 :
104
106
request .setHeader ("Content-Encoding" , "gzip" )
105
107
request .write (gzip .compress (file_content ))
106
108
else :
@@ -125,6 +127,8 @@ def stop(self):
125
127
self .thread .join ()
126
128
127
129
async def wait_for_request (self , path ):
130
+ if path in self .request_subscribers :
131
+ return await self .request_subscribers [path ]
128
132
future = asyncio .Future ()
129
133
self .request_subscribers [path ] = future
130
134
return await future
0 commit comments