diff options
author | James M Snell <jasnell@gmail.com> | 2018-01-08 12:18:22 -0800 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2018-01-11 11:55:19 -0800 |
commit | ee2e7fcd5ff330f036f6502cded21eb013941f89 (patch) | |
tree | cf272a93229258416dc9f0854d9854ac4629f313 /test | |
parent | 20fe04f113fb81423585077265d3026584989232 (diff) | |
download | android-node-v8-ee2e7fcd5ff330f036f6502cded21eb013941f89.tar.gz android-node-v8-ee2e7fcd5ff330f036f6502cded21eb013941f89.tar.bz2 android-node-v8-ee2e7fcd5ff330f036f6502cded21eb013941f89.zip |
http2: remember sent headers
Add sentHeaders, sentTrailers, and sentInfoHeaders properties
on `Http2Stream`.
PR-URL: https://github.com/nodejs/node/pull/18045
Fixes: https://github.com/nodejs/node/issues/16619
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-http2-sent-headers.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/parallel/test-http2-sent-headers.js b/test/parallel/test-http2-sent-headers.js new file mode 100644 index 0000000000..bffa4d71c6 --- /dev/null +++ b/test/parallel/test-http2-sent-headers.js @@ -0,0 +1,47 @@ +'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(); + +server.on('stream', common.mustCall((stream) => { + stream.additionalHeaders({ ':status': 102 }); + assert.strictEqual(stream.sentInfoHeaders[0][':status'], 102); + + stream.respond({ abc: 'xyz' }, { + getTrailers(headers) { + headers.xyz = 'abc'; + } + }); + assert.strictEqual(stream.sentHeaders.abc, 'xyz'); + assert.strictEqual(stream.sentHeaders[':status'], 200); + assert.notStrictEqual(stream.sentHeaders.date, undefined); + stream.end(); + stream.on('close', () => { + assert.strictEqual(stream.sentTrailers.xyz, 'abc'); + }); +})); + +server.listen(0, common.mustCall(() => { + const client = h2.connect(`http://localhost:${server.address().port}`); + const req = client.request(); + + req.on('headers', common.mustCall((headers) => { + assert.strictEqual(headers[':status'], 102); + })); + + assert.strictEqual(req.sentHeaders[':method'], 'GET'); + assert.strictEqual(req.sentHeaders[':authority'], + `localhost:${server.address().port}`); + assert.strictEqual(req.sentHeaders[':scheme'], 'http'); + assert.strictEqual(req.sentHeaders[':path'], '/'); + req.resume(); + req.on('close', () => { + server.close(); + client.close(); + }); +})); |