Skip to content

Commit

Permalink
test: add http2 test for method CONNECT
Browse files Browse the repository at this point in the history
Adds test case for default handling of method CONNECT, as well
as the ability to bind a connect listener and handle the request.

PR-URL: #15052
Refs: #14985
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
apapirovski authored and MylesBorins committed Sep 12, 2017
1 parent 9129057 commit cfbf505
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions test/parallel/test-http2-compat-method-connect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Flags: --expose-http2
'use strict';

const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const assert = require('assert');
const http2 = require('http2');

const server = http2.createServer(common.mustNotCall());

server.listen(0, common.mustCall(() => testMethodConnect(2)));

server.once('connect', common.mustCall((req, res) => {
assert.strictEqual(req.headers[':method'], 'CONNECT');
res.statusCode = 405;
res.end();
}));

function testMethodConnect(testsToRun) {
if (!testsToRun) {
return server.close();
}

const port = server.address().port;
const client = http2.connect(`http://localhost:${port}`);
const req = client.request({
':method': 'CONNECT',
':authority': `localhost:${port}`
});

req.on('response', common.mustCall((headers) => {
assert.strictEqual(headers[':status'], 405);
}));
req.resume();
req.on('end', common.mustCall(() => {
client.destroy();
testMethodConnect(testsToRun - 1);
}));
req.end();
}

0 comments on commit cfbf505

Please sign in to comment.