diff --git a/src/js/node/_http_agent.ts b/src/js/node/_http_agent.ts index e04a27c9f2..c7e3c441ec 100644 --- a/src/js/node/_http_agent.ts +++ b/src/js/node/_http_agent.ts @@ -96,14 +96,23 @@ Agent.prototype.createConnection = function () { }; Agent.prototype.getName = function (options = kEmptyObject) { - let name = `http:${options.host || "localhost"}:`; - if (options.port) name += options.port; + let name = options.host || "localhost"; name += ":"; - if (options.localAddress) name += options.localAddress; + if (options.port) { + name += options.port; + } + name += ":"; + if (options.localAddress) { + name += options.localAddress; + } // Pacify parallel/test-http-agent-getname by only appending // the ':' when options.family is set. - if (options.family === 4 || options.family === 6) name += `:${options.family}`; - if (options.socketPath) name += `:${options.socketPath}`; + if (options.family === 4 || options.family === 6) { + name += `:${options.family}`; + } + if (options.socketPath) { + name += `:${options.socketPath}`; + } return name; }; diff --git a/test/js/node/test/parallel/test-http-agent-getname.js b/test/js/node/test/parallel/test-http-agent-getname.js new file mode 100644 index 0000000000..7153899ac5 --- /dev/null +++ b/test/js/node/test/parallel/test-http-agent-getname.js @@ -0,0 +1,55 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); +const http = require('http'); + +const tmpdir = require('../common/tmpdir'); + +const agent = new http.Agent(); + +// Default to localhost +assert.strictEqual( + agent.getName({ + port: 80, + localAddress: '192.168.1.1' + }), + 'localhost:80:192.168.1.1' +); + +// empty argument +assert.strictEqual( + agent.getName(), + 'localhost::' +); + +// empty options +assert.strictEqual( + agent.getName({}), + 'localhost::' +); + +// pass all arguments +assert.strictEqual( + agent.getName({ + host: '0.0.0.0', + port: 80, + localAddress: '192.168.1.1' + }), + '0.0.0.0:80:192.168.1.1' +); + +// unix socket +const socketPath = tmpdir.resolve('foo', 'bar'); +assert.strictEqual( + agent.getName({ + socketPath + }), + `localhost:::${socketPath}` +); + +for (const family of [0, null, undefined, 'bogus']) + assert.strictEqual(agent.getName({ family }), 'localhost::'); + +for (const family of [4, 6]) + assert.strictEqual(agent.getName({ family }), `localhost:::${family}`);