From 18c4338e7a2be494b6446885185b0660d93cc62a Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Wed, 7 Oct 2015 18:29:51 -0700 Subject: [PATCH] Refactoring to simpliefy things a bit --- src/server/logging/LogFormat.js | 2 +- .../logging/__tests__/applyFilterToKey.js | 106 ------------------ .../logging/__tests__/applyFiltersToKeys.js | 39 +++++++ ...lyFilterToKey.js => applyFiltersToKeys.js} | 6 +- 4 files changed, 41 insertions(+), 112 deletions(-) delete mode 100644 src/server/logging/__tests__/applyFilterToKey.js create mode 100644 src/server/logging/__tests__/applyFiltersToKeys.js rename src/server/logging/{applyFilterToKey.js => applyFiltersToKeys.js} (85%) diff --git a/src/server/logging/LogFormat.js b/src/server/logging/LogFormat.js index 9bc7be017176..18832199fa91 100644 --- a/src/server/logging/LogFormat.js +++ b/src/server/logging/LogFormat.js @@ -6,7 +6,7 @@ let ansicolors = require('ansicolors'); let stringify = require('json-stringify-safe'); let querystring = require('querystring'); let inspect = require('util').inspect; -let applyFiltersToKeys = require('./applyFilterToKey').applyFiltersToKeys; +let applyFiltersToKeys = require('./applyFiltersToKeys'); function serializeError(err) { return { diff --git a/src/server/logging/__tests__/applyFilterToKey.js b/src/server/logging/__tests__/applyFilterToKey.js deleted file mode 100644 index 776a12138ff8..000000000000 --- a/src/server/logging/__tests__/applyFilterToKey.js +++ /dev/null @@ -1,106 +0,0 @@ -var applyFilterToKey = require('../applyFilterToKey'); -var applyFiltersToKeys = applyFilterToKey.applyFiltersToKeys; -var expect = require('expect.js'); - -function fixture() { - return { - req: { - headers: { - authorization: 'Basic dskd939k2i' - } - } - }; -} - -describe('applyFilterToKey(obj, key, action)', function () { - - it('should remove a key from an object recursivly', function () { - var data = fixture(); - data = applyFilterToKey(data, 'authorization', 'remove'); - expect(data).to.eql({ - req: { headers: {} } - }); - }); - - it('should remove an entire branch', function () { - var data = fixture(); - data = applyFilterToKey(data, 'headers', 'remove'); - expect(data).to.eql({ - req: { } - }); - }); - - it('should remove an entire branch with censor', function () { - var data = fixture(); - data = applyFilterToKey(data, 'headers', 'censor'); - expect(data).to.eql({ - req: { } - }); - }); - - it('should censor a key in an object recursivly', function () { - var data = fixture(); - data = applyFilterToKey(data, 'authorization', 'censor'); - expect(data).to.eql({ - req: { - headers: { - authorization: 'XXXXXXXXXXXXXXXX' - } - } - }); - }); - - it('should censor key with a RegEx in an object recursivly', function () { - var data = fixture(); - var regex = '/([^\\s]+)$/'; - data = applyFilterToKey(data, 'authorization', regex); - expect(data).to.eql({ - req: { - headers: { - authorization: 'Basic XXXXXXXXXX' - } - } - }); - }); - - it('uses the JSON version of objects for serializaion', function () { - var data = applyFilterToKey({ - a: { - b: 1, - toJSON: () => ({ c: 10 }) - } - }, 'c', 'censor'); - - expect(data).to.eql({ - a: { - c: 'XX' - } - }); - }); - - describe('applyFiltersToKeys(obj, actionsByKey)', function () { - it('applies applyFilterToKey() for each key+prop in actionsByKey', function () { - var data = applyFiltersToKeys({ - a: { - b: { - c: 1 - }, - d: { - e: 'foobar' - } - } - }, { - b: 'remove', - e: 'censor', - }); - - expect(data).to.eql({ - a: { - d: { - e: 'XXXXXX', - }, - }, - }); - }); - }); -}); diff --git a/src/server/logging/__tests__/applyFiltersToKeys.js b/src/server/logging/__tests__/applyFiltersToKeys.js new file mode 100644 index 000000000000..bb900f3fa2fb --- /dev/null +++ b/src/server/logging/__tests__/applyFiltersToKeys.js @@ -0,0 +1,39 @@ +var applyFiltersToKeys = require('../applyFiltersToKeys'); +var expect = require('expect.js'); + +describe('applyFiltersToKeys(obj, actionsByKey)', function () { + it('applies for each key+prop in actionsByKey', function () { + var data = applyFiltersToKeys({ + a: { + b: { + c: 1 + }, + d: { + e: 'foobar' + } + }, + req: { + headers: { + authorization: 'Basic dskd939k2i' + } + } + }, { + b: 'remove', + e: 'censor', + authorization: '/([^\\s]+)$/' + }); + + expect(data).to.eql({ + a: { + d: { + e: 'XXXXXX', + }, + }, + req: { + headers: { + authorization: 'Basic XXXXXXXXXX' + } + } + }); + }); +}); diff --git a/src/server/logging/applyFilterToKey.js b/src/server/logging/applyFiltersToKeys.js similarity index 85% rename from src/server/logging/applyFilterToKey.js rename to src/server/logging/applyFiltersToKeys.js index df399eb86732..860bdd38b76f 100644 --- a/src/server/logging/applyFilterToKey.js +++ b/src/server/logging/applyFiltersToKeys.js @@ -35,11 +35,7 @@ function apply(obj, key, action) { return obj; } -module.exports = function applyFilterToKey(obj, key, action) { - return apply(toPojo(obj), key, action); -}; - -module.exports.applyFiltersToKeys = function (obj, actionsByKey) { +module.exports = function (obj, actionsByKey) { return Object.keys(actionsByKey).reduce((output, key) => { return apply(output, key, actionsByKey[key]); }, toPojo(obj));