test_network_post.html (4645B)
1 <!DOCTYPE HTML> 2 <html lang="en"> 3 <head> 4 <meta charset="utf8"> 5 <title>Test for the network actor (POST request)</title> 6 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 7 <script type="text/javascript" src="common.js"></script> 8 <!-- Any copyright is dedicated to the Public Domain. 9 - http://creativecommons.org/publicdomain/zero/1.0/ --> 10 </head> 11 <body> 12 <p>Test for the network actor (POST request)</p> 13 14 <iframe src="http://example.com/chrome/devtools/shared/webconsole/test/chrome/network_requests_iframe.html"></iframe> 15 16 <script class="testbody" type="text/javascript"> 17 "use strict"; 18 19 SimpleTest.waitForExplicitFinish(); 20 21 async function startTest() 22 { 23 await SpecialPowers.pushPrefEnv({ 24 'set': [ 25 // Bug 1617611: Fix all the tests broken by "cookies SameSite=lax by default" 26 ['network.cookie.sameSite.laxByDefault', false], 27 ] 28 }); 29 30 const commands = await createCommandsForTab(); 31 const resourceCommand = commands.resourceCommand; 32 33 info("test network POST request"); 34 const resource = await new Promise(resolve => { 35 resourceCommand 36 .watchResources([resourceCommand.TYPES.NETWORK_EVENT], { 37 onAvailable: () => {}, 38 onUpdated: resourceUpdate => { 39 resolve(resourceUpdate[0].resource); 40 }, 41 }) 42 .then(() => { 43 // Spawn the network request after we started watching 44 const iframe = document.querySelector("iframe").contentWindow; 45 iframe.wrappedJSObject.testXhrPost(); 46 }); 47 }); 48 49 const { client } = commands; 50 const netActor = resource.actor; 51 52 info("checking request headers"); 53 const requestHeadersPacket = await client.request({ to: netActor, type: "getRequestHeaders" }); 54 55 ok(!!requestHeadersPacket.headers.length, "request headers > 0"); 56 ok(requestHeadersPacket.headersSize > 0, "request headersSize > 0"); 57 ok(!!requestHeadersPacket.rawHeaders.length, "request rawHeaders available"); 58 59 checkHeadersOrCookies(requestHeadersPacket.headers, { 60 Referer: /network_requests_iframe\.html/, 61 Cookie: /bug768096/, 62 }); 63 64 checkRawHeaders(requestHeadersPacket.rawHeaders, { 65 Referer: /network_requests_iframe\.html/, 66 Cookie: /bug768096/, 67 }); 68 69 info("checking request cookies"); 70 const requestCookiesPacket = await client.request({ to: netActor, type: "getRequestCookies" }); 71 is(requestCookiesPacket.cookies.length, 3, "request cookies length"); 72 73 checkHeadersOrCookies(requestCookiesPacket.cookies, { 74 foobar: "fooval", 75 omgfoo: "bug768096", 76 badcookie: "bug826798=st3fan", 77 }); 78 79 info("checking request POST data"); 80 const requestPostDataPacket = await client.request({ to: netActor, type: "getRequestPostData" }); 81 82 checkObject(requestPostDataPacket, { 83 postData: { 84 text: /^Hello world! foobaz barr.+foobaz barr$/, 85 }, 86 postDataDiscarded: false, 87 }); 88 89 is(requestPostDataPacket.postData.text.length, 552, "postData text length"); 90 91 info("checking response headers"); 92 const responseHeadersPacket = await client.request({ to: netActor, type: "getResponseHeaders" }); 93 ok(!!responseHeadersPacket.headers.length, "response headers > 0"); 94 ok(responseHeadersPacket.headersSize > 0, "response headersSize > 0"); 95 ok(!!responseHeadersPacket.rawHeaders, "response rawHeaders available"); 96 97 checkHeadersOrCookies(responseHeadersPacket.headers, { 98 "content-type": /^application\/(json|octet-stream)$/, 99 "content-length": /^\d+$/, 100 }); 101 102 checkRawHeaders(responseHeadersPacket.rawHeaders, { 103 "content-type": /^application\/(json|octet-stream)$/, 104 "content-length": /^\d+$/, 105 }); 106 107 info("checking response cookies"); 108 const responseCookiesPacket = await client.request({ to: netActor, type: "getResponseCookies" }); 109 is(responseCookiesPacket.cookies.length, 0, "response cookies length"); 110 111 info("checking response content"); 112 const responseContentPacket = await client.request({ to: netActor, type: "getResponseContent" }); 113 checkObject(responseContentPacket, { 114 content: { 115 text: /"test JSON data"/, 116 }, 117 contentDiscarded: false, 118 }); 119 120 info("checking event timings"); 121 const eventTimingsPacket = await client.request({ to: netActor, type: "getEventTimings" }); 122 checkObject(eventTimingsPacket, { 123 timings: { 124 blocked: /^-1|\d+$/, 125 dns: /^-1|\d+$/, 126 connect: /^-1|\d+$/, 127 send: /^-1|\d+$/, 128 wait: /^-1|\d+$/, 129 receive: /^-1|\d+$/, 130 }, 131 totalTime: /^\d+$/, 132 }); 133 134 await commands.destroy(); 135 SpecialPowers.clearUserPref("network.cookie.sameSite.laxByDefault"); 136 SimpleTest.finish(); 137 } 138 139 addEventListener("load", startTest, { once: true }); 140 </script> 141 </body> 142 </html>