From 952ab8c493a3a7d347f14a6eb5c76854ef45b3d4 Mon Sep 17 00:00:00 2001 From: Anatoli Papirovski Date: Sun, 27 Aug 2017 08:41:31 -0400 Subject: [PATCH] test: add a test for Expect & checkExpectation New test case for Expect header & checkExpectation event based on the existing http test case. PR-URL: https://github.com/nodejs/node/pull/15040 Refs: https://github.com/nodejs/node/issues/14985 Reviewed-By: James M Snell Reviewed-By: Yuta Hiroto Reviewed-By: Colin Ihrig --- .../test-http2-compat-expect-handling.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 test/parallel/test-http2-compat-expect-handling.js diff --git a/test/parallel/test-http2-compat-expect-handling.js b/test/parallel/test-http2-compat-expect-handling.js new file mode 100644 index 00000000000000..774d276b64e4ae --- /dev/null +++ b/test/parallel/test-http2-compat-expect-handling.js @@ -0,0 +1,46 @@ +// Flags: --expose-http2 +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const assert = require('assert'); +const http2 = require('http2'); + +const expectValue = 'meoww'; + +const server = http2.createServer(common.mustNotCall()); + +server.once('checkExpectation', common.mustCall((req, res) => { + assert.strictEqual(req.headers['expect'], expectValue); + res.statusCode = 417; + res.end(); +})); + +server.listen(0, common.mustCall(() => nextTest(2))); + +function nextTest(testsToRun) { + if (!testsToRun) { + return server.close(); + } + + const port = server.address().port; + const client = http2.connect(`http://localhost:${port}`); + const req = client.request({ + ':path': '/', + ':method': 'GET', + ':scheme': 'http', + ':authority': `localhost:${port}`, + expect: expectValue + }); + + req.on('response', common.mustCall((headers) => { + assert.strictEqual(headers[':status'], 417); + req.resume(); + })); + + req.on('end', common.mustCall(() => { + client.destroy(); + nextTest(testsToRun - 1); + })); +}