summaryrefslogtreecommitdiff
path: root/test/parallel/test-http2-connect-method-extended.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-http2-connect-method-extended.js')
-rw-r--r--test/parallel/test-http2-connect-method-extended.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/parallel/test-http2-connect-method-extended.js b/test/parallel/test-http2-connect-method-extended.js
new file mode 100644
index 0000000000..bb424c73f0
--- /dev/null
+++ b/test/parallel/test-http2-connect-method-extended.js
@@ -0,0 +1,39 @@
+'use strict';
+
+const common = require('../common');
+if (!common.hasCrypto)
+ common.skip('missing crypto');
+const assert = require('assert');
+const http2 = require('http2');
+
+const settings = { enableConnectProtocol: true };
+const server = http2.createServer({ settings });
+server.on('stream', common.mustCall((stream, headers) => {
+ assert.strictEqual(headers[':method'], 'CONNECT');
+ assert.strictEqual(headers[':scheme'], 'http');
+ assert.strictEqual(headers[':protocol'], 'foo');
+ assert.strictEqual(headers[':authority'],
+ `localhost:${server.address().port}`);
+ assert.strictEqual(headers[':path'], '/');
+ stream.respond();
+ stream.end('ok');
+}));
+
+server.listen(0, common.mustCall(() => {
+ const client = http2.connect(`http://localhost:${server.address().port}`);
+ client.on('remoteSettings', common.mustCall((settings) => {
+ assert(settings.enableConnectProtocol);
+ const req = client.request({
+ ':method': 'CONNECT',
+ ':protocol': 'foo'
+ });
+ req.resume();
+ req.on('end', common.mustCall());
+ req.on('close', common.mustCall(() => {
+ assert.strictEqual(req.rstCode, 0);
+ server.close();
+ client.close();
+ }));
+ req.end();
+ }));
+}));