1'use strict'; 2 3/** 4 * This test covers http.Server({ IncomingMessage }) option: 5 * With IncomingMessage option the server should use 6 * the new class for creating req Object instead of the default 7 * http.IncomingMessage. 8 */ 9const common = require('../common'); 10const assert = require('assert'); 11const http = require('http'); 12 13class MyIncomingMessage extends http.IncomingMessage { 14 getUserAgent() { 15 return this.headers['user-agent'] || 'unknown'; 16 } 17} 18 19const server = http.createServer({ 20 IncomingMessage: MyIncomingMessage 21}, common.mustCall(function(req, res) { 22 assert.strictEqual(req.getUserAgent(), 'node-test'); 23 res.statusCode = 200; 24 res.end(); 25})); 26server.listen(); 27 28server.on('listening', function makeRequest() { 29 http.get({ 30 port: this.address().port, 31 headers: { 32 'User-Agent': 'node-test' 33 } 34 }, (res) => { 35 assert.strictEqual(res.statusCode, 200); 36 res.on('end', () => { 37 server.close(); 38 }); 39 res.resume(); 40 }); 41}); 42