From 20dae8540b4a6306d53ebd8fca88a9940c8e9c00 Mon Sep 17 00:00:00 2001 From: Trivikram <16024985+trivikr@users.noreply.github.com> Date: Sat, 17 Feb 2018 20:35:01 -0800 Subject: [PATCH] test: http2 client setNextStreamID errors PR-URL: https://github.com/nodejs/node/pull/18848 Reviewed-By: Luigi Pinca Reviewed-By: Minwoo Jung Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell --- ...est-http2-client-setNextStreamID-errors.js | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 test/parallel/test-http2-client-setNextStreamID-errors.js diff --git a/test/parallel/test-http2-client-setNextStreamID-errors.js b/test/parallel/test-http2-client-setNextStreamID-errors.js new file mode 100644 index 00000000000..0c982061b85 --- /dev/null +++ b/test/parallel/test-http2-client-setNextStreamID-errors.js @@ -0,0 +1,59 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const http2 = require('http2'); + +const server = http2.createServer(); +server.on('stream', (stream) => { + stream.respond(); + stream.end('ok'); +}); + +const types = { + boolean: true, + function: () => {}, + number: 1, + object: {}, + array: [], + null: null, + symbol: Symbol('test') +}; + +server.listen(0, common.mustCall(() => { + const client = http2.connect(`http://localhost:${server.address().port}`); + + client.on('connect', () => { + const outOfRangeNum = 2 ** 31; + common.expectsError( + () => client.setNextStreamID(outOfRangeNum), + { + type: RangeError, + code: 'ERR_OUT_OF_RANGE', + message: 'The value of "id" is out of range.' + + ' It must be > 0 and <= 2147483647. Received ' + outOfRangeNum + } + ); + + // should throw if something other than number is passed to setNextStreamID + Object.entries(types).forEach(([type, value]) => { + if (type === 'number') { + return; + } + + common.expectsError( + () => client.setNextStreamID(value), + { + type: TypeError, + code: 'ERR_INVALID_ARG_TYPE', + message: 'The "id" argument must be of type number' + } + ); + }); + + server.close(); + client.close(); + }); +}));