UNPKG

2.86 kBtext/coffeescriptView Raw
1Logasm = require '../lib/logasm'
2StdoutAdapter = require '../lib/logasm/adapters/stdout_adapter'
3LogstashAdapter = require '../lib/logasm/adapters/logstash_adapter'
4Blacklist = require '../lib/logasm/preprocessors/blacklist'
5
6describe 'Logasm', ->
7 it 'creates stdout logger', (done) ->
8 logasm = Logasm.build "My service", {stdout: {}}
9
10 logasm.adapters.should.have.length(1)
11 logasm.adapters[0].should.be.an.instanceof(StdoutAdapter)
12 done()
13
14 it 'creates logstash logger', (done) ->
15 logasm = Logasm.build "My service", {logstash: {host: 'localhost', port: 5229}}
16
17 logasm.adapters.should.have.length(1)
18 logasm.adapters[0].should.be.an.instanceof(LogstashAdapter)
19 done()
20
21 it 'creates multiple loggers', (done) ->
22 logasm = Logasm.build "My service", {stdout: {}, logstash: {host: 'localhost', port: 5229}}
23
24 logasm.adapters.should.have.length(2)
25 logasm.adapters[0].should.be.an.instanceof(StdoutAdapter)
26 logasm.adapters[1].should.be.an.instanceof(LogstashAdapter)
27 done()
28
29 it 'creates stdout logger when no loggers are specified', (done) ->
30 logasm = Logasm.build "My service", undefined
31
32 logasm.adapters.should.have.length(1)
33 logasm.adapters[0].should.be.an.instanceof(StdoutAdapter)
34 done()
35
36 it 'creates preprocessor when defined', (done) ->
37 logasm = Logasm.build "My service", undefined, {blacklist: {fields: []}}
38
39 logasm.preprocessors.should.have.length(1)
40 logasm.preprocessors[0].should.be.an.instanceof(Blacklist)
41 done()
42
43 context 'when preprocessor defined', ->
44 preprocessor = {
45 process: sinon.stub().returns({data:'processed', message: 'Received message'})
46 }
47 adapter = {
48 log: sinon.spy()
49 }
50
51 beforeEach ->
52 @logasm = new Logasm([adapter], [preprocessor])
53
54 it 'preprocesses data before logging', ->
55 @logasm.info('Received message', {data: 'data'})
56
57 expect(preprocessor.process).to.be.calledWith({data: 'data', message: 'Received message'})
58 expect(adapter.log).to.be.calledWith("info", {data:'processed', message: 'Received message'})
59
60 context 'when parsing log data', ->
61 beforeEach ->
62 @logasm = Logasm.build ''
63
64 it 'parses empty string with no metadata', (done) ->
65 result = @logasm.parseLogData('')
66
67 result.should.eql({message: ''})
68 done()
69
70 it 'parses undefined as metadata', (done) ->
71 result = @logasm.parseLogData(undefined)
72
73 result.should.eql({message: undefined})
74 done()
75
76 it 'parses only message', (done) ->
77 result = @logasm.parseLogData('test message')
78
79 result.should.eql({message: 'test message'})
80 done()
81
82 it 'message and metadata', (done) ->
83 result = @logasm.parseLogData('test message', {test: 'data', more: 'testing'})
84
85 result.should.eql({message: 'test message', test: 'data', more: 'testing'})
86 done()