Skip to content

Commit

Permalink
test: add test for 06cfff9 regression
Browse files Browse the repository at this point in the history
This commit adds a test to ensure all options are NOT modified after
passing them to http.request. Specifically options.host and options.port
are the most prominent that would previously error, but add the other
options that have default values.

options.host and options.port were overridden for the one-argument
net.createConnection(options) call.

PR-URL: #1467
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
brendanashworth committed Apr 18, 2015
1 parent 7180597 commit 6bf85bc
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions test/parallel/test-http-request-dont-override-options.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
'use strict';

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

var requests = 0;

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

requests++;
}).listen(common.PORT).unref();

var agent = new http.Agent();
agent.defaultPort = common.PORT;

// options marked as explicitly undefined for readability
// in this test, they should STAY undefined as options should not
// be mutable / modified
var 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);
});

0 comments on commit 6bf85bc

Please sign in to comment.