Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / netwerk / test / unit / test_nojsredir.js
blob227cb04608a7812441ec0a45e43ac22fe0b05850
1 "use strict";
3 const { HttpServer } = ChromeUtils.importESModule(
4 "resource://testing-common/httpd.sys.mjs"
5 );
7 var httpserver = new HttpServer();
8 var index = 0;
9 var tests = [
10 { url: "/test/test", datalen: 16 },
12 // Test that the http channel fails and the response body is suppressed
13 // bug 255119
15 url: "/test/test",
16 responseheader: ["Location: javascript:alert()"],
17 flags: CL_EXPECT_FAILURE,
18 datalen: 0,
22 function setupChannel(url) {
23 return NetUtil.newChannel({
24 uri: "http://localhost:" + httpserver.identity.primaryPort + url,
25 loadUsingSystemPrincipal: true,
26 });
29 function startIter() {
30 var channel = setupChannel(tests[index].url);
31 channel.asyncOpen(
32 new ChannelListener(completeIter, channel, tests[index].flags)
36 function completeIter(request, data) {
37 Assert.ok(data.length == tests[index].datalen);
38 if (++index < tests.length) {
39 startIter();
40 } else {
41 httpserver.stop(do_test_finished);
45 function run_test() {
46 httpserver.registerPathHandler("/test/test", handler);
47 httpserver.start(-1);
49 startIter();
50 do_test_pending();
53 function handler(metadata, response) {
54 var body = "thequickbrownfox";
55 response.setHeader("Content-Type", "text/plain", false);
57 var header = tests[index].responseheader;
58 if (header != undefined) {
59 for (var i = 0; i < header.length; i++) {
60 var splitHdr = header[i].split(": ");
61 response.setHeader(splitHdr[0], splitHdr[1], false);
65 response.setStatusLine(metadata.httpVersion, 302, "Redirected");
66 response.bodyOutputStream.write(body, body.length);