diff options
author | Brian White <mscdex@mscdex.net> | 2017-01-14 17:39:58 +0300 |
---|---|---|
committer | Italo A. Casas <me@italoacasas.com> | 2017-02-28 05:50:31 +0300 |
commit | 3e8d43d165ef9d363d18d1d6585582fc2742fb64 (patch) | |
tree | e1165d0d93e9c2d47502ce7253400f7964de80ed /test | |
parent | fedf26b23551d5a5a8e871df22f4a355793effbf (diff) |
http: add new functions to OutgoingMessage
PR-URL: https://github.com/nodejs/node/pull/11562
Backport-of: https://github.com/nodejs/node/pull/10805
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-http-mutable-headers.js | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/test/parallel/test-http-mutable-headers.js b/test/parallel/test-http-mutable-headers.js index 072dd97076f..f2e6a1f2808 100644 --- a/test/parallel/test-http-mutable-headers.js +++ b/test/parallel/test-http-mutable-headers.js @@ -21,6 +21,13 @@ const cookies = [ const s = http.createServer(common.mustCall((req, res) => { switch (test) { case 'headers': + // Check that header-related functions work before setting any headers + // eslint-disable-next-line no-restricted-properties + assert.deepEqual(res.getHeaders(), {}); + assert.deepStrictEqual(res.getHeaderNames(), []); + assert.deepStrictEqual(res.hasHeader('Connection'), false); + assert.deepStrictEqual(res.getHeader('Connection'), undefined); + assert.throws(() => { res.setHeader(); }, /^TypeError: Header name must be a valid HTTP Token \["undefined"\]$/); @@ -34,15 +41,52 @@ const s = http.createServer(common.mustCall((req, res) => { res.removeHeader(); }, /^Error: "name" argument is required for removeHeader\(name\)$/); + const arrayValues = [1, 2, 3]; res.setHeader('x-test-header', 'testing'); res.setHeader('X-TEST-HEADER2', 'testing'); res.setHeader('set-cookie', cookies); - res.setHeader('x-test-array-header', [1, 2, 3]); + res.setHeader('x-test-array-header', arrayValues); assert.strictEqual(res.getHeader('x-test-header'), 'testing'); assert.strictEqual(res.getHeader('x-test-header2'), 'testing'); + const headersCopy = res.getHeaders(); + // eslint-disable-next-line no-restricted-properties + assert.deepEqual(headersCopy, { + 'x-test-header': 'testing', + 'x-test-header2': 'testing', + 'set-cookie': cookies, + 'x-test-array-header': arrayValues + }); + // eslint-disable-next-line no-restricted-properties + assert.deepEqual(headersCopy['set-cookie'], cookies); + assert.strictEqual(headersCopy['x-test-array-header'], arrayValues); + + assert.deepStrictEqual(res.getHeaderNames(), + ['x-test-header', 'x-test-header2', + 'set-cookie', 'x-test-array-header']); + + assert.strictEqual(res.hasHeader('x-test-header2'), true); + assert.strictEqual(res.hasHeader('X-TEST-HEADER2'), true); + assert.strictEqual(res.hasHeader('X-Test-Header2'), true); + assert.throws(() => { + res.hasHeader(); + }, /^TypeError: "name" argument must be a string$/); + assert.throws(() => { + res.hasHeader(null); + }, /^TypeError: "name" argument must be a string$/); + assert.throws(() => { + res.hasHeader(true); + }, /^TypeError: "name" argument must be a string$/); + assert.throws(() => { + res.hasHeader({ toString: () => 'X-TEST-HEADER2' }); + }, /^TypeError: "name" argument must be a string$/); + res.removeHeader('x-test-header2'); + + assert.strictEqual(res.hasHeader('x-test-header2'), false); + assert.strictEqual(res.hasHeader('X-TEST-HEADER2'), false); + assert.strictEqual(res.hasHeader('X-Test-Header2'), false); break; case 'contentLength': |