/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/** * Tests that the server accepts requests to custom host names. * This is commonly used in tests that map custom host names to the server via * a proxy e.g. by XPCShellContentUtils.createHttpServer.
*/
var srv = createServer();
srv.start(-1);
registerCleanupFunction(() => new Promise(resolve => srv.stop(resolve))); const PORT = srv.identity.primaryPort;
srv.registerPathHandler("/dump-request", dumpRequestLines);
function makeRawRequest(requestLinePath, hostHeader) { return `GET ${requestLinePath} HTTP/1.1\r\nHost: ${hostHeader}\r\n\r\n`;
}
function verifyResponseHostPort(data, query, expectedHost, expectedPort) { var iter = LineIterator(data);
// Status-Line Assert.equal(iter.next().value, "HTTP/1.1 200 TEST PASSED");
skipHeaders(iter);
// Okay, next line must be the data we expected to be written var body = [ "Method: GET", "Path: /dump-request", "Query: " + query, "Version: 1.1", "Scheme: http", "Host: " + expectedHost, "Port: " + expectedPort,
];
expectLines(iter, body);
}
function runIdentityTest(host, port) {
srv.identity.add("http", host, port);
function checkAbsoluteRequestURI(data) {
verifyResponseHostPort(data, "absolute", host, port);
} function checkHostHeader(data) {
verifyResponseHostPort(data, "relative", host, port);
}
let tests = [];
let test, data;
let hostport = `${host}:${port}`;
data = makeRawRequest(`http://${hostport}/dump-request?absolute`, hostport);
test = new RawTest("localhost", PORT, data, checkAbsoluteRequestURI);
tests.push(test);
data = makeRawRequest("/dump-request?relative", hostport);
test = new RawTest("localhost", PORT, data, checkHostHeader);
tests.push(test); returnnew Promise(resolve => {
runRawTests(tests, resolve);
});
}
/** ************* * BEGIN TESTS *
***************/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.