test_te_remove.js (1930B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { NodeHTTP2Server } = ChromeUtils.importESModule( 8 "resource://testing-common/NodeServer.sys.mjs" 9 ); 10 11 add_task(async function test_overwrite_te() { 12 let certdb = Cc["@mozilla.org/security/x509certdb;1"].getService( 13 Ci.nsIX509CertDB 14 ); 15 addCertFromFile(certdb, "http2-ca.pem", "CTu,u,u"); 16 17 let server = new NodeHTTP2Server(); 18 await server.start(); 19 registerCleanupFunction(async () => { 20 await server.stop(); 21 }); 22 await server.registerPathHandler("/", (req, resp) => { 23 // Set response headers 24 resp.writeHead(200, { "Content-Type": "application/json" }); 25 26 // Dump headers 27 resp.end(JSON.stringify(req.headers, null, 2)); 28 }); 29 30 let chan = NetUtil.newChannel({ 31 uri: `https://localhost:${server.port()}/`, 32 loadUsingSystemPrincipal: true, 33 }).QueryInterface(Ci.nsIHttpChannel); 34 chan.loadFlags = Ci.nsIChannel.LOAD_INITIAL_DOCUMENT_URI; 35 36 let { buffer } = await new Promise(resolve => { 37 function finish(r, b) { 38 resolve({ req: r, buffer: b }); 39 } 40 chan.asyncOpen(new ChannelListener(finish, null, CL_ALLOW_UNKNOWN_CL)); 41 }); 42 43 let json = JSON.parse(buffer); 44 Assert.equal(json.te, "trailers"); 45 46 chan = NetUtil.newChannel({ 47 uri: `https://localhost:${server.port()}/`, 48 loadUsingSystemPrincipal: true, 49 }).QueryInterface(Ci.nsIHttpChannel); 50 chan.loadFlags = Ci.nsIChannel.LOAD_INITIAL_DOCUMENT_URI; 51 chan.setRequestHeader("TE", "moz_no_te_trailers", false); 52 53 ({ buffer } = await new Promise(resolve => { 54 function finish(r, b) { 55 resolve({ req: r, buffer: b }); 56 } 57 chan.asyncOpen(new ChannelListener(finish, null, CL_ALLOW_UNKNOWN_CL)); 58 })); 59 60 json = JSON.parse(buffer); 61 Assert.equal(json.te, undefined); 62 });