Refactoring to simpliefy things a bit
This commit is contained in:
parent
0479c25f9b
commit
18c4338e7a
|
@ -6,7 +6,7 @@ let ansicolors = require('ansicolors');
|
||||||
let stringify = require('json-stringify-safe');
|
let stringify = require('json-stringify-safe');
|
||||||
let querystring = require('querystring');
|
let querystring = require('querystring');
|
||||||
let inspect = require('util').inspect;
|
let inspect = require('util').inspect;
|
||||||
let applyFiltersToKeys = require('./applyFilterToKey').applyFiltersToKeys;
|
let applyFiltersToKeys = require('./applyFiltersToKeys');
|
||||||
|
|
||||||
function serializeError(err) {
|
function serializeError(err) {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -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',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
39
src/server/logging/__tests__/applyFiltersToKeys.js
Normal file
39
src/server/logging/__tests__/applyFiltersToKeys.js
Normal file
|
@ -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'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -35,11 +35,7 @@ function apply(obj, key, action) {
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = function applyFilterToKey(obj, key, action) {
|
module.exports = function (obj, actionsByKey) {
|
||||||
return apply(toPojo(obj), key, action);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports.applyFiltersToKeys = function (obj, actionsByKey) {
|
|
||||||
return Object.keys(actionsByKey).reduce((output, key) => {
|
return Object.keys(actionsByKey).reduce((output, key) => {
|
||||||
return apply(output, key, actionsByKey[key]);
|
return apply(output, key, actionsByKey[key]);
|
||||||
}, toPojo(obj));
|
}, toPojo(obj));
|
Loading…
Reference in a new issue