From 11d6be5697fa61857b87fef3749c65adf38439fc Mon Sep 17 00:00:00 2001 From: Adam Eivy Date: Mon, 13 Oct 2014 12:25:02 -0700 Subject: [PATCH] Fix TypeError in node 0.11.14: "Object.keys called on non-object" --- lib/util/urltils.js | 4 ++-- test/unit/urltils.test.js | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/util/urltils.js b/lib/util/urltils.js index 6999683bbb..e346bd09d4 100644 --- a/lib/util/urltils.js +++ b/lib/util/urltils.js @@ -71,9 +71,9 @@ module.exports = { parseParameters : function parseParameters(requestURL) { var parsed = url.parse(requestURL, true) , parameters = {} - - if (parsed.search !== '') { + + if (parsed.search) { Object.keys(parsed.query).forEach(function cb_forEach(key) { if (parsed.query[key] === '' && parsed.path.indexOf(key + '=') < 0) { parameters[key] = true diff --git a/test/unit/urltils.test.js b/test/unit/urltils.test.js index 5c3f07228b..0014d74597 100644 --- a/test/unit/urltils.test.js +++ b/test/unit/urltils.test.js @@ -4,7 +4,7 @@ var path = require('path') , chai = require('chai') , expect = chai.expect , urltils = require('../../lib/util/urltils.js') - + describe("NR URL utilities", function () { describe("scrubbing URLs", function () { @@ -13,6 +13,20 @@ describe("NR URL utilities", function () { }) }) + describe("parsing parameters", function () { + it("should find empty object of params in url lacking query", function () { + expect(urltils.parseParameters('/favicon.ico')).deep.equal({}); + }) + + it("should find v param in url containing ?v with no value", function () { + expect(urltils.parseParameters('/status?v')).deep.equal({v:true}); + }) + + it("should find v param with value in url containing ?v=1", function () { + expect(urltils.parseParameters('/status?v=1')).deep.equal({v:'1'}); + }) + }) + describe("determining whether an HTTP status code is an error", function () { var config = {error_collector : {ignore_status_codes : []}} @@ -129,7 +143,7 @@ describe("NR URL utilities", function () { var config , source , dest - + beforeEach(function () { config = {