'use strict'; require('../common'); const assert = require('assert'); const http = require('http'); const OutgoingMessage = http.OutgoingMessage; const ClientRequest = http.ClientRequest; const ServerResponse = http.ServerResponse; assert.throws(OutgoingMessage.prototype._implicitHeader, /^Error: _implicitHeader\(\) method is not implemented$/); 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$/);