diff options
author | Weijia Wang <381152119@qq.com> | 2017-08-10 18:58:22 +0800 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2017-08-14 17:19:19 -0400 |
commit | 11a2ca29babcb35132e7d93244b69c544d52dfe4 (patch) | |
tree | a7372ad1c4dfc4300d8a050c8f1fe3cccdadc3b4 /test | |
parent | 28a47aa1bbd4d278293fda2bb3f2df836d743816 (diff) | |
download | android-node-v8-11a2ca29babcb35132e7d93244b69c544d52dfe4.tar.gz android-node-v8-11a2ca29babcb35132e7d93244b69c544d52dfe4.tar.bz2 android-node-v8-11a2ca29babcb35132e7d93244b69c544d52dfe4.zip |
errors: migrate _http_outgoing
PR-URL: https://github.com/nodejs/node/pull/14735
Refs: https://github.com/nodejs/node/issues/11273
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-http-mutable-headers.js | 73 | ||||
-rw-r--r-- | test/parallel/test-http-outgoing-proto.js | 72 | ||||
-rw-r--r-- | test/parallel/test-http-outgoing-renderHeaders.js | 10 | ||||
-rw-r--r-- | test/parallel/test-http-request-invalid-method-error.js | 2 | ||||
-rw-r--r-- | test/parallel/test-http-response-add-header-after-sent.js | 13 | ||||
-rw-r--r-- | test/parallel/test-http-response-remove-header-after-sent.js | 13 | ||||
-rw-r--r-- | test/parallel/test-http-response-splitting.js | 22 | ||||
-rw-r--r-- | test/parallel/test-http-write-head.js | 18 | ||||
-rw-r--r-- | test/parallel/test-internal-errors.js | 6 |
9 files changed, 159 insertions, 70 deletions
diff --git a/test/parallel/test-http-mutable-headers.js b/test/parallel/test-http-mutable-headers.js index 63f4b4cad2..929a566caf 100644 --- a/test/parallel/test-http-mutable-headers.js +++ b/test/parallel/test-http-mutable-headers.js @@ -50,18 +50,38 @@ const s = http.createServer(common.mustCall((req, res) => { 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"\]$/); - assert.throws(() => { - res.setHeader('someHeader'); - }, /^Error: "value" required in setHeader\("someHeader", value\)$/); - assert.throws(() => { - res.getHeader(); - }, /^TypeError: "name" argument must be a string$/); - assert.throws(() => { - res.removeHeader(); - }, /^TypeError: "name" argument must be a string$/); + common.expectsError( + () => res.setHeader(), + { + code: 'ERR_INVALID_HTTP_TOKEN', + type: TypeError, + message: 'Header name must be a valid HTTP token ["undefined"]' + } + ); + common.expectsError( + () => res.setHeader('someHeader'), + { + code: 'ERR_MISSING_ARGS', + type: TypeError, + message: 'The "value" argument must be specified' + } + ); + common.expectsError( + () => res.getHeader(), + { + code: 'ERR_INVALID_ARG_TYPE', + type: TypeError, + message: 'The "name" argument must be of type string' + } + ); + common.expectsError( + () => res.removeHeader(), + { + code: 'ERR_INVALID_ARG_TYPE', + type: TypeError, + message: 'The "name" argument must be of type string' + } + ); const arrayValues = [1, 2, 3]; res.setHeader('x-test-header', 'testing'); @@ -89,18 +109,23 @@ const s = http.createServer(common.mustCall((req, res) => { 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$/); + [ + undefined, + null, + true, + {}, + { toString: () => 'X-TEST-HEADER2' }, + () => { } + ].forEach((val) => { + common.expectsError( + () => res.hasHeader(val), + { + code: 'ERR_INVALID_ARG_TYPE', + type: TypeError, + message: 'The "name" argument must be of type string' + } + ); + }); res.removeHeader('x-test-header2'); diff --git a/test/parallel/test-http-outgoing-proto.js b/test/parallel/test-http-outgoing-proto.js index 202a185c78..22eba0981f 100644 --- a/test/parallel/test-http-outgoing-proto.js +++ b/test/parallel/test-http-outgoing-proto.js @@ -1,5 +1,5 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const http = require('http'); @@ -7,8 +7,14 @@ const OutgoingMessage = http.OutgoingMessage; const ClientRequest = http.ClientRequest; const ServerResponse = http.ServerResponse; -assert.throws(OutgoingMessage.prototype._implicitHeader, - /^Error: _implicitHeader\(\) method is not implemented$/); +common.expectsError( + OutgoingMessage.prototype._implicitHeader, + { + code: 'ERR_METHOD_NOT_IMPLEMENTED', + type: Error, + message: 'The _implicitHeader() method is not implemented' + } +); assert.strictEqual( typeof ClientRequest.prototype._implicitHeader, 'function'); assert.strictEqual( @@ -18,45 +24,77 @@ assert.strictEqual( assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.setHeader(); -}, /^TypeError: Header name must be a valid HTTP Token \["undefined"\]$/); +}, common.expectsError({ + code: 'ERR_INVALID_HTTP_TOKEN', + type: TypeError, + message: 'Header name must be a valid HTTP token ["undefined"]' +})); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.setHeader('test'); -}, /^Error: "value" required in setHeader\("test", value\)$/); +}, common.expectsError({ + code: 'ERR_MISSING_ARGS', + type: TypeError, + message: 'The "value" argument must be specified' +})); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.setHeader(404); -}, /^TypeError: Header name must be a valid HTTP Token \["404"\]$/); +}, common.expectsError({ + code: 'ERR_INVALID_HTTP_TOKEN', + type: TypeError, + message: 'Header name must be a valid HTTP token ["404"]' +})); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.setHeader.call({ _header: 'test' }, 'test', 'value'); -}, /^Error: Can't set headers after they are sent\.$/); +}, common.expectsError({ + code: 'ERR_HTTP_HEADERS_SENT', + type: Error, + message: 'Cannot set headers after they are sent to the client' +})); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.setHeader('200', 'あ'); -}, /^TypeError: The header content contains invalid characters$/); +}, common.expectsError({ + code: 'ERR_INVALID_CHAR', + type: TypeError, + message: 'Invalid character in header content ["200"]' +})); // write assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.write(); -}, /^Error: _implicitHeader\(\) method is not implemented$/); +}, common.expectsError({ + code: 'ERR_METHOD_NOT_IMPLEMENTED', + type: Error, + message: 'The _implicitHeader() method is not implemented' +})); assert(OutgoingMessage.prototype.write.call({ _header: 'test' })); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.write.call({ _header: 'test', _hasBody: 'test' }); -}, /^TypeError: First argument must be a string or Buffer$/); +}, common.expectsError({ + code: 'ERR_INVALID_ARG_TYPE', + type: TypeError, + message: 'The first argument must be one of type string or buffer' +})); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.write.call({ _header: 'test', _hasBody: 'test' }, 1); -}, /^TypeError: First argument must be a string or Buffer$/); +}, common.expectsError({ + code: 'ERR_INVALID_ARG_TYPE', + type: TypeError, + message: 'The first argument must be one of type string or buffer' +})); // addTrailers assert.throws(() => { @@ -67,9 +105,17 @@ assert.throws(() => { assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.addTrailers({ 'あ': 'value' }); -}, /^TypeError: Trailer name must be a valid HTTP Token \["あ"\]$/); +}, common.expectsError({ + code: 'ERR_INVALID_HTTP_TOKEN', + type: TypeError, + message: 'Trailer name must be a valid HTTP token ["あ"]' +})); assert.throws(() => { const outgoingMessage = new OutgoingMessage(); outgoingMessage.addTrailers({ 404: 'あ' }); -}, /^TypeError: The trailer content contains invalid characters$/); +}, common.expectsError({ + code: 'ERR_INVALID_CHAR', + type: TypeError, + message: 'Invalid character in trailer content ["404"]' +})); diff --git a/test/parallel/test-http-outgoing-renderHeaders.js b/test/parallel/test-http-outgoing-renderHeaders.js index bae7fc5812..138ab96753 100644 --- a/test/parallel/test-http-outgoing-renderHeaders.js +++ b/test/parallel/test-http-outgoing-renderHeaders.js @@ -1,7 +1,7 @@ 'use strict'; // Flags: --expose-internals -require('../common'); +const common = require('../common'); const assert = require('assert'); const outHeadersKey = require('internal/http').outHeadersKey; @@ -11,9 +11,13 @@ const OutgoingMessage = http.OutgoingMessage; { const outgoingMessage = new OutgoingMessage(); outgoingMessage._header = {}; - assert.throws( + common.expectsError( outgoingMessage._renderHeaders.bind(outgoingMessage), - /^Error: Can't render headers after they are sent to the client$/ + { + code: 'ERR_HTTP_HEADERS_SENT', + type: Error, + message: 'Cannot render headers after they are sent to the client' + } ); } diff --git a/test/parallel/test-http-request-invalid-method-error.js b/test/parallel/test-http-request-invalid-method-error.js index 457e90fd48..59706e90c7 100644 --- a/test/parallel/test-http-request-invalid-method-error.js +++ b/test/parallel/test-http-request-invalid-method-error.js @@ -8,6 +8,6 @@ assert.throws( common.expectsError({ code: 'ERR_INVALID_HTTP_TOKEN', type: TypeError, - message: 'Method must be a valid HTTP token' + message: 'Method must be a valid HTTP token ["\u0000"]' }) ); diff --git a/test/parallel/test-http-response-add-header-after-sent.js b/test/parallel/test-http-response-add-header-after-sent.js index 19b71fc31d..8329d3ea7e 100644 --- a/test/parallel/test-http-response-add-header-after-sent.js +++ b/test/parallel/test-http-response-add-header-after-sent.js @@ -1,5 +1,5 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const http = require('http'); @@ -8,9 +8,14 @@ const server = http.createServer((req, res) => { res.setHeader('header1', 1); }); res.write('abc'); - assert.throws(() => { - res.setHeader('header2', 2); - }, /Can't set headers after they are sent\./); + common.expectsError( + () => res.setHeader('header2', 2), + { + code: 'ERR_HTTP_HEADERS_SENT', + type: Error, + message: 'Cannot set headers after they are sent to the client' + } + ); res.end(); }); diff --git a/test/parallel/test-http-response-remove-header-after-sent.js b/test/parallel/test-http-response-remove-header-after-sent.js index 4e35b7e9d0..e6adffc144 100644 --- a/test/parallel/test-http-response-remove-header-after-sent.js +++ b/test/parallel/test-http-response-remove-header-after-sent.js @@ -1,5 +1,5 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const http = require('http'); @@ -8,9 +8,14 @@ const server = http.createServer((req, res) => { res.removeHeader('header1', 1); }); res.write('abc'); - assert.throws(() => { - res.removeHeader('header2', 2); - }, /Can't remove headers after they are sent/); + common.expectsError( + () => res.removeHeader('header2', 2), + { + code: 'ERR_HTTP_HEADERS_SENT', + type: Error, + message: 'Cannot remove headers after they are sent to the client' + } + ); res.end(); }); diff --git a/test/parallel/test-http-response-splitting.js b/test/parallel/test-http-response-splitting.js index b14d59e59c..bf483b53e3 100644 --- a/test/parallel/test-http-response-splitting.js +++ b/test/parallel/test-http-response-splitting.js @@ -1,6 +1,6 @@ 'use strict'; -require('../common'); +const common = require('../common'); const http = require('http'); const net = require('net'); const url = require('url'); @@ -19,23 +19,29 @@ const y = 'foo⠊Set-Cookie: foo=bar'; let count = 0; -function test(res, code, header) { - assert.throws(() => { - res.writeHead(code, header); - }, /^TypeError: The header content contains invalid characters$/); +function test(res, code, key, value) { + const header = { [key]: value }; + common.expectsError( + () => res.writeHead(code, header), + { + code: 'ERR_INVALID_CHAR', + type: TypeError, + message: `Invalid character in header content ["${key}"]` + } + ); } const server = http.createServer((req, res) => { switch (count++) { case 0: const loc = url.parse(req.url, true).query.lang; - test(res, 302, { Location: `/foo?lang=${loc}` }); + test(res, 302, 'Location', `/foo?lang=${loc}`); break; case 1: - test(res, 200, { 'foo': x }); + test(res, 200, 'foo', x); break; case 2: - test(res, 200, { 'foo': y }); + test(res, 200, 'foo', y); break; default: assert.fail('should not get to here.'); diff --git a/test/parallel/test-http-write-head.js b/test/parallel/test-http-write-head.js index edf60d3c24..70ad5935a9 100644 --- a/test/parallel/test-http-write-head.js +++ b/test/parallel/test-http-write-head.js @@ -41,16 +41,14 @@ const s = http.createServer(common.mustCall((req, res) => { assert.ok(threw, 'Non-string names should throw'); // undefined value should throw, via 979d0ca8 - threw = false; - try { - res.setHeader('foo', undefined); - } catch (e) { - assert.ok(e instanceof Error); - assert.strictEqual(e.message, - '"value" required in setHeader("foo", value)'); - threw = true; - } - assert.ok(threw, 'Undefined value should throw'); + common.expectsError( + () => res.setHeader('foo', undefined), + { + code: 'ERR_MISSING_ARGS', + type: TypeError, + message: 'The "value" argument must be specified' + } + ); res.writeHead(200, { Test: '2' }); diff --git a/test/parallel/test-internal-errors.js b/test/parallel/test-internal-errors.js index 8df0780e04..21c8de8e0d 100644 --- a/test/parallel/test-internal-errors.js +++ b/test/parallel/test-internal-errors.js @@ -242,7 +242,7 @@ assert.strictEqual( ); assert.strictEqual( - errors.message('ERR_HTTP_HEADERS_SENT'), + errors.message('ERR_HTTP_HEADERS_SENT', ['render']), 'Cannot render headers after they are sent to the client' ); @@ -252,8 +252,8 @@ assert.strictEqual( ); assert.strictEqual( - errors.message('ERR_INVALID_HTTP_TOKEN', ['Method']), - 'Method must be a valid HTTP token' + errors.message('ERR_INVALID_HTTP_TOKEN', ['Method', 'foo']), + 'Method must be a valid HTTP token ["foo"]' ); assert.strictEqual( |