node/test/parallel/test-http2-server-rst-before-respond.js
James M Snell cef909797a http2: do not emit our own close emit in Http2Stream
Streams were recently updated to emit their own close event. The
Http2Stream was an exception because it included the close argument
with the close event. Refactor that to use the built in close.

PR-URL: https://github.com/nodejs/node/pull/19451
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
2018-03-22 13:48:47 -07:00

38 lines
930 B
JavaScript

'use strict';
const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const assert = require('assert');
const h2 = require('http2');
const server = h2.createServer();
// we use the lower-level API here
server.on('stream', common.mustCall(onStream));
function onStream(stream, headers, flags) {
stream.close();
common.expectsError(() => {
stream.additionalHeaders({
':status': 123,
'abc': 123
});
}, { code: 'ERR_HTTP2_INVALID_STREAM' });
}
server.listen(0);
server.on('listening', common.mustCall(() => {
const client = h2.connect(`http://localhost:${server.address().port}`);
const req = client.request();
req.on('headers', common.mustNotCall());
req.on('close', common.mustCall(() => {
assert.strictEqual(h2.constants.NGHTTP2_NO_ERROR, req.rstCode);
server.close();
client.close();
}));
req.on('response', common.mustNotCall());
}));