1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const h2 = require('http2'); 8 9// Http2ServerResponse.writeHead should support nested arrays 10 11const server = h2.createServer(); 12server.listen(0, common.mustCall(() => { 13 const port = server.address().port; 14 server.once('request', common.mustCall((request, response) => { 15 const returnVal = response.writeHead(200, [ 16 ['foo', 'bar'], 17 ['ABC', 123], 18 ]); 19 assert.strictEqual(returnVal, response); 20 response.end(common.mustCall(() => { server.close(); })); 21 })); 22 23 const url = `http://localhost:${port}`; 24 const client = h2.connect(url, common.mustCall(() => { 25 const headers = { 26 ':path': '/', 27 ':method': 'GET', 28 ':scheme': 'http', 29 ':authority': `localhost:${port}` 30 }; 31 const request = client.request(headers); 32 request.on('response', common.mustCall((headers) => { 33 assert.strictEqual(headers.foo, 'bar'); 34 assert.strictEqual(headers.abc, '123'); 35 assert.strictEqual(headers[':status'], 200); 36 }, 1)); 37 request.on('end', common.mustCall(() => { 38 client.close(); 39 })); 40 request.end(); 41 request.resume(); 42 })); 43})); 44