browser/devtools/netmonitor/test/browser_net_resend.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 let gPanelWin;
     5 let gPanelDoc;
     7 const ADD_QUERY = "t1=t2";
     8 const ADD_HEADER = "Test-header: true";
     9 const ADD_POSTDATA = "t3=t4";
    11 /**
    12  * Tests if resending a request works.
    13  */
    15 function test() {
    16   initNetMonitor(POST_DATA_URL).then(([aTab, aDebuggee, aMonitor]) => {
    17     info("Starting test... ");
    19     gPanelWin = aMonitor.panelWin;
    20     gPanelDoc = gPanelWin.document;
    22     let { NetMonitorView } = gPanelWin;
    23     let { RequestsMenu } = NetMonitorView;
    24     let TAB_UPDATED = aMonitor.panelWin.EVENTS.TAB_UPDATED;
    25     let CUSTOMREQUESTVIEW_POPULATED = aMonitor.panelWin.EVENTS.CUSTOMREQUESTVIEW_POPULATED;
    27     RequestsMenu.lazyUpdate = false;
    29     waitForNetworkEvents(aMonitor, 0, 2).then(() => {
    30       let origItem = RequestsMenu.getItemAtIndex(0);
    31       RequestsMenu.selectedItem = origItem;
    33       waitFor(aMonitor.panelWin, TAB_UPDATED).then(() => {
    34         // add a new custom request cloned from selected request
    35         RequestsMenu.cloneSelectedRequest();
    36         return waitFor(aMonitor.panelWin, CUSTOMREQUESTVIEW_POPULATED);
    37       }).then(() => {
    38         testCustomForm(origItem.attachment);
    40         let customItem = RequestsMenu.selectedItem;
    41         testCustomItem(customItem, origItem);
    43         // edit the custom request
    44         editCustomForm(() => {
    45           testCustomItemChanged(customItem, origItem);
    47           waitForNetworkEvents(aMonitor, 0, 1).then(() => {
    48             let sentItem = RequestsMenu.selectedItem;
    49             testSentRequest(sentItem.attachment, origItem.attachment);
    50             finishUp(aMonitor);
    51           });
    52           // send the new request
    53           RequestsMenu.sendCustomRequest();
    54         });
    55       });
    56     });
    58     aDebuggee.performRequests();
    59   });
    60 }
    62 function testCustomItem(aItem, aOrigItem) {
    63   let method = aItem.target.querySelector(".requests-menu-method").value;
    64   let origMethod = aOrigItem.target.querySelector(".requests-menu-method").value;
    65   is(method, origMethod, "menu item is showing the same method as original request");
    67   let file = aItem.target.querySelector(".requests-menu-file").value;
    68   let origFile = aOrigItem.target.querySelector(".requests-menu-file").value;
    69   is(file, origFile, "menu item is showing the same file name as original request");
    71   let domain = aItem.target.querySelector(".requests-menu-domain").value;
    72   let origDomain = aOrigItem.target.querySelector(".requests-menu-domain").value;
    73   is(domain, origDomain, "menu item is showing the same domain as original request");
    74 }
    76 function testCustomItemChanged(aItem, aOrigItem) {
    77   let file = aItem.target.querySelector(".requests-menu-file").value;
    78   let expectedFile = aOrigItem.target.querySelector(".requests-menu-file").value + "&" + ADD_QUERY;
    80   is(file, expectedFile, "menu item is updated to reflect url entered in form");
    81 }
    83 /*
    84  * Test that the New Request form was populated correctly
    85  */
    86 function testCustomForm(aData) {
    87   is(gPanelDoc.getElementById("custom-method-value").value, aData.method,
    88      "new request form showing correct method");
    90   is(gPanelDoc.getElementById("custom-url-value").value, aData.url,
    91      "new request form showing correct url");
    93   let query = gPanelDoc.getElementById("custom-query-value");
    94   is(query.value, "foo=bar\nbaz=42\ntype=urlencoded",
    95      "new request form showing correct query string");
    97   let headers = gPanelDoc.getElementById("custom-headers-value").value.split("\n");
    98   for (let {name, value} of aData.requestHeaders.headers) {
    99     ok(headers.indexOf(name + ": " + value) >= 0, "form contains header from request");
   100   }
   102   let postData = gPanelDoc.getElementById("custom-postdata-value");
   103   is(postData.value, aData.requestPostData.postData.text,
   104      "new request form showing correct post data");
   105 }
   107 /*
   108  * Add some params and headers to the request form
   109  */
   110 function editCustomForm(callback) {
   111   gPanelWin.focus();
   113   let query = gPanelDoc.getElementById("custom-query-value");
   114   query.addEventListener("focus", function onFocus() {
   115     query.removeEventListener("focus", onFocus, false);
   117     // add params to url query string field
   118     type(["VK_RETURN"]);
   119     type(ADD_QUERY);
   121     let headers = gPanelDoc.getElementById("custom-headers-value");
   122     headers.addEventListener("focus", function onFocus() {
   123       headers.removeEventListener("focus", onFocus, false);
   125       // add a header
   126       type(["VK_RETURN"]);
   127       type(ADD_HEADER);
   129       let postData = gPanelDoc.getElementById("custom-postdata-value");
   130       postData.addEventListener("focus", function onFocus() {
   131         postData.removeEventListener("focus", onFocus, false);
   133         // add to POST data
   134         type(ADD_POSTDATA);
   135         callback();
   136       }, false);
   137       postData.focus();
   138     }, false);
   139     headers.focus();
   140   }, false);
   141   query.focus();
   142 }
   144 /*
   145  * Make sure newly created event matches expected request
   146  */
   147 function testSentRequest(aData, aOrigData) {
   148   is(aData.method, aOrigData.method, "correct method in sent request");
   149   is(aData.url, aOrigData.url + "&" + ADD_QUERY, "correct url in sent request");
   151   let hasHeader = aData.requestHeaders.headers.some((header) => {
   152     return (header.name + ": " + header.value) == ADD_HEADER;
   153   })
   154   ok(hasHeader, "new header added to sent request");
   156   is(aData.requestPostData.postData.text,
   157      aOrigData.requestPostData.postData.text + ADD_POSTDATA,
   158      "post data added to sent request");
   159 }
   162 function type(aString) {
   163   for (let ch of aString) {
   164     EventUtils.synthesizeKey(ch, {}, gPanelWin);
   165   }
   166 }
   168 function finishUp(aMonitor) {
   169   gPanelWin = null;
   170   gPanelDoc = null;
   172   teardown(aMonitor).then(finish);
   173 }

mercurial