• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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