describe('Tracer Logger', function() { var Log = require('../../../src/lib/log'); var TracerLogger = require('../../../src/lib/loggers/tracer'); var expect = require('expect.js'); var parentLog; beforeEach(function() { parentLog = new Log(); }); afterEach(function() { parentLog.close(); }); function makeLogger(parent, levels) { parent = parent || parentLog; var config = { levels: Log.parseLevels(levels || 'trace'), }; return new TracerLogger(parent, config); } var stub = require('../../utils/auto_release_stub').make(); // require('../generic_logger_tests')(makeLogger); describe('#formatTraceMessage', function() { it('includes the original host', function() { var logger = makeLogger(); var formatted = logger._formatTraceMessage({ method: 'DELETE', url: 'https://originalHost.com:9522/path/to/thing?qs=100', body: '{ "yes": true }', status: 333, response: '{ "ok": false }', }); expect(formatted.curl).to.match(/-XDELETE/); expect(formatted.curl).to.match( /https:\/\/originalHost\.com:9522\/?\s+/i ); expect(formatted.curl).to.match( /https:\/\/localhost:9200\/path\/to\/thing\?(pretty=true|qs=100|&){3}/ ); }); }); describe('#write', function() { var logger; beforeEach(function() { logger = makeLogger(); stub(logger.stream, 'write'); }); it('detects tracer logs by listening messages wrapped in objects', function() { logger.write('TRACE', { msg: 'msgtext', curl: 'curlcall' }); expect(logger.stream.write.callCount).to.be(1); expect(logger.stream.write.lastCall.args[0]).to.contain('msgtext'); expect(logger.stream.write.lastCall.args[0]).to.contain('curlcall'); }); it('comments everthing except the curl call', function() { logger.write('TRACE', { msg: 'comment me', curl: 'no comment' }); expect(logger.stream.write.callCount).to.be(1); expect(logger.stream.write.lastCall.args[0]).to.match(/^# +comment me/m); expect(logger.stream.write.lastCall.args[0]).to.match(/^no comment/m); }); it('just comments when it gets a string', function() { logger.write('TRACE', 'log me'); expect(logger.stream.write.callCount).to.be(1); expect(logger.stream.write.lastCall.args[0]).to.match(/^# +log me/m); }); }); });