From 916786346c33982f7e094a5064b33687550443a0 Mon Sep 17 00:00:00 2001 From: Ciro Spaciari Date: Fri, 11 Oct 2024 22:53:25 -0700 Subject: [PATCH] more --- .../test/parallel/http2-sent-headers.test.js | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 test/js/node/test/parallel/http2-sent-headers.test.js diff --git a/test/js/node/test/parallel/http2-sent-headers.test.js b/test/js/node/test/parallel/http2-sent-headers.test.js new file mode 100644 index 0000000000000..9b64bf96c59fb --- /dev/null +++ b/test/js/node/test/parallel/http2-sent-headers.test.js @@ -0,0 +1,76 @@ +//#FILE: test-http2-sent-headers.js +//#SHA1: cbc2db06925ef62397fd91d70872b787363cd96c +//----------------- +'use strict'; + +const h2 = require('http2'); + +const hasCrypto = (() => { + try { + require('crypto'); + return true; + } catch (err) { + return false; + } +})(); + +(hasCrypto ? describe : describe.skip)('http2 sent headers', () => { + let server; + let client; + let port; + + beforeAll((done) => { + server = h2.createServer(); + + server.on('stream', (stream) => { + stream.additionalHeaders({ ':status': 102 }); + expect(stream.sentInfoHeaders[0][':status']).toBe(102); + + stream.respond({ abc: 'xyz' }, { waitForTrailers: true }); + stream.on('wantTrailers', () => { + stream.sendTrailers({ xyz: 'abc' }); + }); + expect(stream.sentHeaders.abc).toBe('xyz'); + expect(stream.sentHeaders[':status']).toBe(200); + expect(stream.sentHeaders.date).toBeDefined(); + stream.end(); + stream.on('close', () => { + expect(stream.sentTrailers.xyz).toBe('abc'); + }); + }); + + server.listen(0, () => { + port = server.address().port; + done(); + }); + }); + + afterAll((done) => { + server.close(() => { + done(); + }); + }); + + test('client request headers', (done) => { + client = h2.connect(`http://localhost:${port}`); + const req = client.request(); + + req.on('headers', (headers, flags) => { + expect(headers[':status']).toBe(102); + expect(typeof flags).toBe('number'); + }); + + expect(req.sentHeaders[':method']).toBe('GET'); + expect(req.sentHeaders[':authority']).toBe(`localhost:${port}`); + expect(req.sentHeaders[':scheme']).toBe('http'); + expect(req.sentHeaders[':path']).toBe('/'); + + req.resume(); + req.on('close', () => { + client.close(); + done(); + }); + }); +}); + +//<#END_FILE: test-http2-sent-headers.js