73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Tests if copying a request's request/response headers works.
|
|
*/
|
|
|
|
add_task(function* () {
|
|
let { tab, monitor } = yield initNetMonitor(SIMPLE_URL);
|
|
info("Starting test... ");
|
|
|
|
let { NetMonitorView } = monitor.panelWin;
|
|
let { RequestsMenu } = NetMonitorView;
|
|
|
|
RequestsMenu.lazyUpdate = false;
|
|
|
|
let wait = waitForNetworkEvents(monitor, 1);
|
|
tab.linkedBrowser.reload();
|
|
yield wait;
|
|
|
|
let requestItem = RequestsMenu.getItemAtIndex(0);
|
|
RequestsMenu.selectedItem = requestItem;
|
|
|
|
let { method, httpVersion, status, statusText } = requestItem.attachment;
|
|
|
|
const EXPECTED_REQUEST_HEADERS = [
|
|
`${method} ${SIMPLE_URL} ${httpVersion}`,
|
|
"Host: example.com",
|
|
"User-Agent: " + navigator.userAgent + "",
|
|
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
"Accept-Language: " + navigator.languages.join(",") + ";q=0.5",
|
|
"Accept-Encoding: gzip, deflate",
|
|
"Connection: keep-alive",
|
|
"Upgrade-Insecure-Requests: 1",
|
|
"Pragma: no-cache",
|
|
"Cache-Control: no-cache"
|
|
].join("\n");
|
|
|
|
yield waitForClipboardPromise(function setup() {
|
|
RequestsMenu.contextMenu.copyRequestHeaders();
|
|
}, function validate(result) {
|
|
// Sometimes, a "Cookie" header is left over from other tests. Remove it:
|
|
result = String(result).replace(/Cookie: [^\n]+\n/, "");
|
|
return result === EXPECTED_REQUEST_HEADERS;
|
|
});
|
|
info("Clipboard contains the currently selected item's request headers.");
|
|
|
|
const EXPECTED_RESPONSE_HEADERS = [
|
|
`${httpVersion} ${status} ${statusText}`,
|
|
"last-modified: Sun, 3 May 2015 11:11:11 GMT",
|
|
"content-type: text/html",
|
|
"content-length: 465",
|
|
"connection: close",
|
|
"server: httpd.js",
|
|
"date: Sun, 3 May 2015 11:11:11 GMT"
|
|
].join("\n");
|
|
|
|
yield waitForClipboardPromise(function setup() {
|
|
RequestsMenu.contextMenu.copyResponseHeaders();
|
|
}, function validate(result) {
|
|
// Fake the "Last-Modified" and "Date" headers because they will vary:
|
|
result = String(result)
|
|
.replace(/last-modified: [^\n]+ GMT/, "last-modified: Sun, 3 May 2015 11:11:11 GMT")
|
|
.replace(/date: [^\n]+ GMT/, "date: Sun, 3 May 2015 11:11:11 GMT");
|
|
return result === EXPECTED_RESPONSE_HEADERS;
|
|
});
|
|
info("Clipboard contains the currently selected item's response headers.");
|
|
|
|
yield teardown(monitor);
|
|
});
|