good-requests-filter
Version:
Simple transform stream for filtering specific resuqest logging with good
87 lines (60 loc) • 1.87 kB
JavaScript
;
const Stream = require('stream');
const Code = require('code');
const Lab = require('lab');
const GoodRequestsFilter = require('..');
const lab = exports.lab = Lab.script();
const expect = Code.expect;
const describe = lab.describe;
const it = lab.it;
const internals = {
readStream() {
const stream = new Stream.Readable({ objectMode: true });
stream._read = () => {
};
return stream;
}
};
describe('RequestsFilter', () => {
it('should not filter any non request logs', { plan: 1 }, (done) => {
const stream = new GoodRequestsFilter();
const result = [];
stream.on('data', (data) => {
result.push(data);
});
stream.on('end', () => {
expect(result).to.deep.equal([{
event: 'response',
id: 1
}]);
done();
});
const read = internals.readStream();
read.pipe(stream);
read.push({ event: 'response', id: 1 });
read.push(null);
});
it('should filter all requests starting with /test', { plan: 1 }, (done) => {
const stream = new GoodRequestsFilter({
paths: [/\/test\/*/]
});
const result = [];
stream.on('data', (data) => {
result.push(data);
});
stream.on('end', () => {
expect(result).to.deep.equal([{
event: 'request',
id: 2,
path: '/check'
}]);
done();
});
const read = internals.readStream();
read.pipe(stream);
read.push({ event: 'request', id: 1, path: '/test/a' });
read.push({ event: 'request', id: 2, path: '/check' });
read.push({ event: 'request', id: 3, path: '/test/b' });
read.push(null);
});
});