diff --git a/test/parallel/test-http-outgoing-proto.js b/test/parallel/test-http-outgoing-proto.js index 738e1d2c8cfe4e..53198708b42b68 100644 --- a/test/parallel/test-http-outgoing-proto.js +++ b/test/parallel/test-http-outgoing-proto.js @@ -12,3 +12,63 @@ assert.strictEqual( typeof ClientRequest.prototype._implicitHeader, 'function'); assert.strictEqual( typeof ServerResponse.prototype._implicitHeader, 'function'); + +// validateHeader +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.setHeader(); +}, /^TypeError: 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\)$/); + +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.setHeader(404); +}, /^TypeError: 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.$/); + +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.setHeader('200', 'あ'); +}, /^TypeError: The header content contains invalid characters$/); + +// write +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.write(); +}, /^Error: _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$/); + +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.write.call({_header: 'test', _hasBody: 'test'}, 1); +}, /^TypeError: First argument must be a string or Buffer$/); + +// addTrailers +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.addTrailers(); +}, /^TypeError: Cannot convert undefined or null to object$/); + +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.addTrailers({'あ': 'value'}); +}, /^TypeError: Trailer name must be a valid HTTP Token \["あ"\]$/); + +assert.throws(() => { + const outgoingMessage = new OutgoingMessage(); + outgoingMessage.addTrailers({404: 'あ'}); +}, /^TypeError: The trailer content contains invalid characters$/);