@@ -279,6 +279,44 @@ async def test_should_be_undefined_when_there_is_no_post_data(page, server):
279
279
assert response .request .post_data_json is None
280
280
281
281
282
+ async def test_should_return_post_data_without_content_type (page , server ):
283
+ await page .goto (server .EMPTY_PAGE )
284
+ async with page .expect_request ("**/*" ) as request_info :
285
+ await page .evaluate (
286
+ """({url}) => {
287
+ const request = new Request(url, {
288
+ method: 'POST',
289
+ body: JSON.stringify({ value: 42 }),
290
+ });
291
+ request.headers.set('content-type', '');
292
+ return fetch(request);
293
+ }""" ,
294
+ {"url" : server .PREFIX + "/title.html" },
295
+ )
296
+ request = await request_info .value
297
+ assert request .post_data_json == {"value" : 42 }
298
+
299
+
300
+ async def test_should_throw_on_invalid_json_in_post_data (page , server ):
301
+ await page .goto (server .EMPTY_PAGE )
302
+ async with page .expect_request ("**/*" ) as request_info :
303
+ await page .evaluate (
304
+ """({url}) => {
305
+ const request = new Request(url, {
306
+ method: 'POST',
307
+ body: '<not a json>',
308
+ });
309
+ request.headers.set('content-type', '');
310
+ return fetch(request);
311
+ }""" ,
312
+ {"url" : server .PREFIX + "/title.html" },
313
+ )
314
+ request = await request_info .value
315
+ with pytest .raises (Error ) as exc_info :
316
+ print (request .post_data_json )
317
+ assert "POST data is not a valid JSON object: <not a json>" in str (exc_info .value )
318
+
319
+
282
320
async def test_should_work_with_binary_post_data (page , server ):
283
321
await page .goto (server .EMPTY_PAGE )
284
322
server .set_route ("/post" , lambda req : req .finish ())
0 commit comments