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 server = http2.createServer(common.mustNotCall()); 10 11server.listen(0, common.mustCall(() => testMethodConnect(2))); 12 13server.once('connect', common.mustCall((req, res) => { 14 assert.strictEqual(req.headers[':method'], 'CONNECT'); 15 res.statusCode = 405; 16 res.end(); 17})); 18 19function testMethodConnect(testsToRun) { 20 if (!testsToRun) { 21 return server.close(); 22 } 23 24 const port = server.address().port; 25 const client = http2.connect(`http://localhost:${port}`); 26 const req = client.request({ 27 ':method': 'CONNECT', 28 ':authority': `localhost:${port}` 29 }); 30 31 req.on('response', common.mustCall((headers) => { 32 assert.strictEqual(headers[':status'], 405); 33 })); 34 req.resume(); 35 req.on('end', common.mustCall(() => { 36 client.close(); 37 testMethodConnect(testsToRun - 1); 38 })); 39 req.end(); 40} 41