summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_resend.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /devtools/client/netmonitor/test/browser_net_resend.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_resend.js')
-rw-r--r--devtools/client/netmonitor/test/browser_net_resend.js174
1 files changed, 174 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_resend.js b/devtools/client/netmonitor/test/browser_net_resend.js
new file mode 100644
index 000000000..7b540ec50
--- /dev/null
+++ b/devtools/client/netmonitor/test/browser_net_resend.js
@@ -0,0 +1,174 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests if resending a request works.
+ */
+
+const ADD_QUERY = "t1=t2";
+const ADD_HEADER = "Test-header: true";
+const ADD_UA_HEADER = "User-Agent: Custom-Agent";
+const ADD_POSTDATA = "&t3=t4";
+
+add_task(function* () {
+ let { tab, monitor } = yield initNetMonitor(POST_DATA_URL);
+ info("Starting test... ");
+
+ let { panelWin } = monitor;
+ let { document, EVENTS, NetMonitorView } = panelWin;
+ let { RequestsMenu } = NetMonitorView;
+
+ RequestsMenu.lazyUpdate = false;
+
+ let wait = waitForNetworkEvents(monitor, 0, 2);
+ yield ContentTask.spawn(tab.linkedBrowser, {}, function* () {
+ content.wrappedJSObject.performRequests();
+ });
+ yield wait;
+
+ let origItem = RequestsMenu.getItemAtIndex(0);
+
+ let onTabUpdated = panelWin.once(EVENTS.TAB_UPDATED);
+ RequestsMenu.selectedItem = origItem;
+ yield onTabUpdated;
+
+ // add a new custom request cloned from selected request
+ let onPopulated = panelWin.once(EVENTS.CUSTOMREQUESTVIEW_POPULATED);
+ RequestsMenu.cloneSelectedRequest();
+ yield onPopulated;
+
+ testCustomForm(origItem.attachment);
+
+ let customItem = RequestsMenu.selectedItem;
+ testCustomItem(customItem, origItem);
+
+ // edit the custom request
+ yield editCustomForm();
+ testCustomItemChanged(customItem, origItem);
+
+ // send the new request
+ wait = waitForNetworkEvents(monitor, 0, 1);
+ RequestsMenu.sendCustomRequest();
+ yield wait;
+
+ let sentItem = RequestsMenu.selectedItem;
+ testSentRequest(sentItem.attachment, origItem.attachment);
+
+ return teardown(monitor);
+
+ function testCustomItem(item, orig) {
+ let method = item.target.querySelector(".requests-menu-method").value;
+ let origMethod = orig.target.querySelector(".requests-menu-method").value;
+ is(method, origMethod, "menu item is showing the same method as original request");
+
+ let file = item.target.querySelector(".requests-menu-file").value;
+ let origFile = orig.target.querySelector(".requests-menu-file").value;
+ is(file, origFile, "menu item is showing the same file name as original request");
+
+ let domain = item.target.querySelector(".requests-menu-domain").value;
+ let origDomain = orig.target.querySelector(".requests-menu-domain").value;
+ is(domain, origDomain, "menu item is showing the same domain as original request");
+ }
+
+ function testCustomItemChanged(item, orig) {
+ let file = item.target.querySelector(".requests-menu-file").value;
+ let expectedFile = orig.target.querySelector(".requests-menu-file").value +
+ "&" + ADD_QUERY;
+
+ is(file, expectedFile, "menu item is updated to reflect url entered in form");
+ }
+
+ /*
+ * Test that the New Request form was populated correctly
+ */
+ function testCustomForm(data) {
+ is(document.getElementById("custom-method-value").value, data.method,
+ "new request form showing correct method");
+
+ is(document.getElementById("custom-url-value").value, data.url,
+ "new request form showing correct url");
+
+ let query = document.getElementById("custom-query-value");
+ is(query.value, "foo=bar\nbaz=42\ntype=urlencoded",
+ "new request form showing correct query string");
+
+ let headers = document.getElementById("custom-headers-value").value.split("\n");
+ for (let {name, value} of data.requestHeaders.headers) {
+ ok(headers.indexOf(name + ": " + value) >= 0, "form contains header from request");
+ }
+
+ let postData = document.getElementById("custom-postdata-value");
+ is(postData.value, data.requestPostData.postData.text,
+ "new request form showing correct post data");
+ }
+
+ /*
+ * Add some params and headers to the request form
+ */
+ function* editCustomForm() {
+ panelWin.focus();
+
+ let query = document.getElementById("custom-query-value");
+ let queryFocus = once(query, "focus", false);
+ // Bug 1195825: Due to some unexplained dark-matter with promise,
+ // focus only works if delayed by one tick.
+ query.setSelectionRange(query.value.length, query.value.length);
+ executeSoon(() => query.focus());
+ yield queryFocus;
+
+ // add params to url query string field
+ type(["VK_RETURN"]);
+ type(ADD_QUERY);
+
+ let headers = document.getElementById("custom-headers-value");
+ let headersFocus = once(headers, "focus", false);
+ headers.setSelectionRange(headers.value.length, headers.value.length);
+ headers.focus();
+ yield headersFocus;
+
+ // add a header
+ type(["VK_RETURN"]);
+ type(ADD_HEADER);
+
+ // add a User-Agent header, to check if default headers can be modified
+ // (there will be two of them, first gets overwritten by the second)
+ type(["VK_RETURN"]);
+ type(ADD_UA_HEADER);
+
+ let postData = document.getElementById("custom-postdata-value");
+ let postFocus = once(postData, "focus", false);
+ postData.setSelectionRange(postData.value.length, postData.value.length);
+ postData.focus();
+ yield postFocus;
+
+ // add to POST data
+ type(ADD_POSTDATA);
+ }
+
+ /*
+ * Make sure newly created event matches expected request
+ */
+ function testSentRequest(data, origData) {
+ is(data.method, origData.method, "correct method in sent request");
+ is(data.url, origData.url + "&" + ADD_QUERY, "correct url in sent request");
+
+ let { headers } = data.requestHeaders;
+ let hasHeader = headers.some(h => `${h.name}: ${h.value}` == ADD_HEADER);
+ ok(hasHeader, "new header added to sent request");
+
+ let hasUAHeader = headers.some(h => `${h.name}: ${h.value}` == ADD_UA_HEADER);
+ ok(hasUAHeader, "User-Agent header added to sent request");
+
+ is(data.requestPostData.postData.text,
+ origData.requestPostData.postData.text + ADD_POSTDATA,
+ "post data added to sent request");
+ }
+
+ function type(string) {
+ for (let ch of string) {
+ EventUtils.synthesizeKey(ch, {}, panelWin);
+ }
+ }
+});