Skip to content

Commit 0784c91

Browse files
test: Fix logger service test stubbing and assertions
1 parent 55343b9 commit 0784c91

File tree

3 files changed

+141
-11
lines changed

3 files changed

+141
-11
lines changed

src/server/src/services/cla.js

-10
Original file line numberDiff line numberDiff line change
@@ -816,11 +816,6 @@ class ClaService {
816816
error: error,
817817
msg: 'Warning in CLA operation'
818818
})
819-
logger.warn({
820-
event: 'CLA_WARNING',
821-
error: error,
822-
msg: 'Warning in CLA operation'
823-
})
824819
}
825820
}
826821
try {
@@ -835,11 +830,6 @@ class ClaService {
835830
error: error,
836831
msg: 'Warning in CLA operation'
837832
})
838-
logger.warn({
839-
event: 'CLA_WARNING',
840-
error: error,
841-
msg: 'Warning in CLA operation'
842-
})
843833
}
844834

845835

src/server/src/webhooks/pull_request.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ async function updateStatusAndComment(args, item) {
8686
number: args.number,
8787
})
8888
} catch (error) {
89-
logger.error({
89+
logger.warn({
9090
event: 'PR_WEBHOOK_WARNING',
9191
error: error,
9292
msg: 'Warning in PR webhook operation'

src/tests/server/services/logger.js

+140
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
// SPDX-FileCopyrightText: 2022 SAP SE or an SAP affiliate company and CLA-assistant contributors
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
/*global describe, it, beforeEach, afterEach*/
6+
const assert = require('assert')
7+
const sinon = require('sinon')
8+
const bunyan = require('bunyan')
9+
10+
describe('logger service', () => {
11+
let logStub
12+
let logger
13+
14+
beforeEach(() => {
15+
logStub = {
16+
info: sinon.stub(),
17+
error: sinon.stub(),
18+
warn: sinon.stub(),
19+
debug: sinon.stub()
20+
}
21+
// Stub bunyan.createLogger to return our stub
22+
sinon.stub(bunyan, 'createLogger').returns(logStub)
23+
// Clear require cache to force reload of logger
24+
delete require.cache[require.resolve('../../../server/src/services/logger')]
25+
logger = require('../../../server/src/services/logger')
26+
})
27+
28+
afterEach(() => {
29+
sinon.restore()
30+
})
31+
32+
describe('startRequest', () => {
33+
it('should log request start with context', () => {
34+
const req = {
35+
method: 'GET',
36+
url: '/test',
37+
headers: {
38+
'x-request-id': '123'
39+
}
40+
}
41+
logger.startRequest(req)
42+
assert(logStub.info.calledOnce)
43+
const logCall = logStub.info.getCall(0).args[0]
44+
assert.equal(logCall.event, 'REQUEST_STARTED')
45+
assert.equal(logCall.msg, 'Started GET /test')
46+
assert.deepEqual(logCall.req, {
47+
method: 'GET',
48+
url: '/test',
49+
headers: {
50+
'x-request-id': '123'
51+
}
52+
})
53+
})
54+
})
55+
56+
describe('endRequest', () => {
57+
it('should log request end with duration and status', () => {
58+
const req = {
59+
method: 'GET',
60+
url: '/test',
61+
headers: {
62+
'x-request-id': '123'
63+
}
64+
}
65+
const res = {
66+
statusCode: 200
67+
}
68+
const duration = 100
69+
logger.endRequest(req, res, duration)
70+
assert(logStub.info.calledOnce)
71+
const logCall = logStub.info.getCall(0).args[0]
72+
assert.equal(logCall.event, 'REQUEST_COMPLETED')
73+
assert.equal(logCall.msg, 'Completed GET /test in 100ms')
74+
assert.deepEqual(logCall.req, {
75+
method: 'GET',
76+
url: '/test',
77+
headers: {
78+
'x-request-id': '123'
79+
}
80+
})
81+
assert.deepEqual(logCall.res, {
82+
statusCode: 200
83+
})
84+
assert.equal(logCall.duration_ms, duration)
85+
})
86+
})
87+
88+
describe('info', () => {
89+
it('should log info with context', () => {
90+
const message = 'test message'
91+
const context = { key: 'value' }
92+
logger.info(message, context)
93+
assert(logStub.info.calledOnce)
94+
const logCall = logStub.info.getCall(0).args[0]
95+
assert.equal(logCall.event, 'INFO')
96+
assert.equal(logCall.msg, message)
97+
assert.equal(logCall.key, 'value')
98+
})
99+
})
100+
101+
describe('error', () => {
102+
it('should log error with context', () => {
103+
const error = new Error('test error')
104+
const context = { key: 'value' }
105+
logger.error(error, context)
106+
assert(logStub.error.calledOnce)
107+
const logCall = logStub.error.getCall(0).args[0]
108+
assert.equal(logCall.event, 'ERROR')
109+
assert.equal(logCall.msg, 'test error')
110+
assert.equal(logCall.error, error)
111+
assert.equal(logCall.key, 'value')
112+
})
113+
})
114+
115+
describe('warn', () => {
116+
it('should log warning with context', () => {
117+
const message = 'test warning'
118+
const context = { key: 'value' }
119+
logger.warn(message, context)
120+
assert(logStub.warn.calledOnce)
121+
const logCall = logStub.warn.getCall(0).args[0]
122+
assert.equal(logCall.event, 'WARNING')
123+
assert.equal(logCall.msg, message)
124+
assert.equal(logCall.key, 'value')
125+
})
126+
})
127+
128+
describe('debug', () => {
129+
it('should log debug with context', () => {
130+
const message = 'test debug'
131+
const context = { key: 'value' }
132+
logger.debug(message, context)
133+
assert(logStub.debug.calledOnce)
134+
const logCall = logStub.debug.getCall(0).args[0]
135+
assert.equal(logCall.event, 'DEBUG')
136+
assert.equal(logCall.msg, message)
137+
assert.equal(logCall.key, 'value')
138+
})
139+
})
140+
})

0 commit comments

Comments
 (0)