1 | Logasm = require '../lib/logasm'
|
2 | StdoutAdapter = require '../lib/logasm/adapters/stdout_adapter'
|
3 | LogstashAdapter = require '../lib/logasm/adapters/logstash_adapter'
|
4 | Blacklist = require '../lib/logasm/preprocessors/blacklist'
|
5 |
|
6 | describe '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()
|