From b7e6ac78fe5a9d867d94f5046395ab155bc3bf24 Mon Sep 17 00:00:00 2001 From: Trivikram <16024985+trivikr@users.noreply.github.com> Date: Sat, 17 Feb 2018 23:15:56 -0800 Subject: [PATCH] test: http2 client ping errors PR-URL: https://github.com/nodejs/node/pull/18849 Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- test/parallel/test-http2-ping.js | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/test/parallel/test-http2-ping.js b/test/parallel/test-http2-ping.js index 32fb8926e4716c..0280f656d065db 100644 --- a/test/parallel/test-http2-ping.js +++ b/test/parallel/test-http2-ping.js @@ -71,12 +71,60 @@ server.listen(0, common.mustCall(() => { assert.deepStrictEqual(payload, ret); }))); } + // Only max 2 pings at a time based on the maxOutstandingPings option assert(!client.ping(common.expectsError({ code: 'ERR_HTTP2_PING_CANCEL', type: Error, message: 'HTTP2 ping cancelled' }))); + + // should throw if payload is not of type ArrayBufferView + { + [1, true, {}, []].forEach((invalidPayload) => + common.expectsError( + () => client.ping(invalidPayload), + { + type: TypeError, + code: 'ERR_INVALID_ARG_TYPE', + message: 'The "payload" argument must be one of type' + + ' Buffer, TypedArray, or DataView' + } + ) + ); + } + + // should throw if payload length is not 8 + { + const shortPayload = Buffer.from('abcdefg'); + const longPayload = Buffer.from('abcdefghi'); + [shortPayload, longPayload].forEach((payloadWithInvalidLength) => + common.expectsError( + () => client.ping(payloadWithInvalidLength), + { + type: RangeError, + code: 'ERR_HTTP2_PING_LENGTH', + message: 'HTTP2 ping payload must be 8 bytes' + } + ) + ); + } + + // should throw error is callback is not of type function + { + const payload = Buffer.from('abcdefgh'); + [1, true, {}, []].forEach((invalidCallback) => + common.expectsError( + () => client.ping(payload, invalidCallback), + { + type: TypeError, + code: 'ERR_INVALID_CALLBACK', + message: 'Callback must be a function' + } + ) + ); + } + const req = client.request(); req.resume(); req.on('end', common.mustCall(() => {