1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const http2 = require('http2'); 8 9const codes = [ 200, 202, 300, 400, 404, 451, 500 ]; 10let test = 0; 11 12const server = http2.createServer(); 13 14server.on('stream', common.mustCall((stream) => { 15 const status = codes[test++]; 16 stream.respond({ ':status': status }, { endStream: true }); 17}, 7)); 18 19server.listen(0, common.mustCall(() => { 20 const client = http2.connect(`http://localhost:${server.address().port}`); 21 22 let remaining = codes.length; 23 function maybeClose() { 24 if (--remaining === 0) { 25 client.close(); 26 server.close(); 27 } 28 } 29 30 function doTest(expected) { 31 const req = client.request(); 32 req.on('response', common.mustCall((headers) => { 33 assert.strictEqual(headers[':status'], expected); 34 })); 35 req.resume(); 36 req.on('end', common.mustCall(maybeClose)); 37 } 38 39 for (let n = 0; n < codes.length; n++) 40 doTest(codes[n]); 41})); 42