summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2018-08-23 10:38:31 -0700
committerJames M Snell <jasnell@gmail.com>2018-08-27 02:17:02 -0700
commitdd03706d62937d759bbd358fd122e46c2c769cb8 (patch)
tree831683532cc6e85b23ed2f9ed66aa1ead43dfdfe /test
parent2eef0778344b00609760cf7fcc12508e10c27516 (diff)
downloadandroid-node-v8-dd03706d62937d759bbd358fd122e46c2c769cb8.tar.gz
android-node-v8-dd03706d62937d759bbd358fd122e46c2c769cb8.tar.bz2
android-node-v8-dd03706d62937d759bbd358fd122e46c2c769cb8.zip
http2: throw better error when accessing unbound socket proxy
Fixes: https://github.com/nodejs/node/issues/22268 PR-URL: https://github.com/nodejs/node/pull/22486 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-http2-unbound-socket-proxy.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/parallel/test-http2-unbound-socket-proxy.js b/test/parallel/test-http2-unbound-socket-proxy.js
new file mode 100644
index 0000000000..44f113bac9
--- /dev/null
+++ b/test/parallel/test-http2-unbound-socket-proxy.js
@@ -0,0 +1,69 @@
+'use strict';
+
+const common = require('../common');
+if (!common.hasCrypto)
+ common.skip('missing crypto');
+const http2 = require('http2');
+const net = require('net');
+
+const server = http2.createServer();
+server.on('stream', common.mustCall((stream) => {
+ stream.respond();
+ stream.end('ok');
+}));
+
+server.listen(0, common.mustCall(() => {
+ const client = http2.connect(`http://localhost:${server.address().port}`);
+ const socket = client.socket;
+ const req = client.request();
+ req.resume();
+ req.on('close', common.mustCall(() => {
+ client.close();
+ server.close();
+
+ // Tests to make sure accessing the socket proxy fails with an
+ // informative error.
+ setImmediate(common.mustCall(() => {
+ common.expectsError(() => {
+ socket.example;
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket.example = 1;
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket instanceof net.Socket;
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket.ref();
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket.unref();
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket.setEncoding();
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket.setKeepAlive();
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ common.expectsError(() => {
+ socket.setNoDelay();
+ }, {
+ code: 'ERR_HTTP2_SOCKET_UNBOUND'
+ });
+ }));
+ }));
+}));