summaryrefslogtreecommitdiff
path: root/test/parallel/test-http-request-dont-override-options.js
blob: 04235fd0e42b4e597d83499f23b11fa9cf5f533d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'use strict';

const common = require('../common');
const assert = require('assert');
const http = require('http');

let requests = 0;

http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('ok');

  requests++;
}).listen(0, function() {
  const agent = new http.Agent();
  agent.defaultPort = this.address().port;

  // options marked as explicitly undefined for readability
  // in this test, they should STAY undefined as options should not
  // be mutable / modified
  const options = {
    host: undefined,
    hostname: common.localhostIPv4,
    port: undefined,
    defaultPort: undefined,
    path: undefined,
    method: undefined,
    agent: agent
  };

  http.request(options, function(res) {
    res.resume();
  }).end();

  process.on('exit', function() {
    assert.equal(requests, 1);

    assert.strictEqual(options.host, undefined);
    assert.strictEqual(options.hostname, common.localhostIPv4);
    assert.strictEqual(options.port, undefined);
    assert.strictEqual(options.defaultPort, undefined);
    assert.strictEqual(options.path, undefined);
    assert.strictEqual(options.method, undefined);
  });
}).unref();