1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4 5const http = require('http'); 6const net = require('net'); 7 8const server = http.createServer(common.mustCall(function(req, res) { 9 res.end(); 10})); 11 12server.on('clientError', common.mustCall(function(err, socket) { 13 assert.strictEqual(err instanceof Error, true); 14 assert.strictEqual(err.code, 'HPE_INVALID_METHOD'); 15 assert.strictEqual(err.bytesParsed, 1); 16 assert.strictEqual(err.message, 'Parse Error: Invalid method encountered'); 17 assert.strictEqual(err.rawPacket.toString(), 'Oopsie-doopsie\r\n'); 18 19 socket.end('HTTP/1.1 400 Bad Request\r\n\r\n'); 20 21 server.close(); 22})); 23 24server.listen(0, function() { 25 function next() { 26 // Invalid request 27 const client = net.connect(server.address().port); 28 client.end('Oopsie-doopsie\r\n'); 29 30 let chunks = ''; 31 client.on('data', function(chunk) { 32 chunks += chunk; 33 }); 34 client.once('end', function() { 35 assert.strictEqual(chunks, 'HTTP/1.1 400 Bad Request\r\n\r\n'); 36 }); 37 } 38 39 // Normal request 40 http.get({ port: this.address().port, path: '/' }, function(res) { 41 assert.strictEqual(res.statusCode, 200); 42 res.resume(); 43 res.once('end', next); 44 }); 45}); 46