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.

Refs: nodejs#14985
  • Loading branch information
apapirovski committed Aug 27, 2017
1 parent 70c775a commit 260f29d
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 260f29d

Please sign in to comment.