Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
test: http2 client setNextStreamID errors
PR-URL: #18848
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
trivikr authored and targos committed Mar 17, 2018
commit 5406a53a0cbe8b1d6f10f75ae563f3c14d6692d4
2 changes: 1 addition & 1 deletion lib/internal/http2/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -948,7 +948,7 @@ class Http2Session extends EventEmitter {
if (typeof id !== 'number')
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'id', 'number');
if (id <= 0 || id > kMaxStreams)
throw new errors.RangeError('ERR_OUT_OF_RANGE');
throw new errors.RangeError('ERR_OUT_OF_RANGE', 'id');
this[kHandle].setNextStreamID(id);
}

Expand Down
58 changes: 58 additions & 0 deletions test/parallel/test-http2-client-setNextStreamID-errors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
'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 "id" argument is out of range'
}
);

// 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();
});
}));