123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /* global test:false, expect:false, describe:false, beforeAll:false, */
- const chalk = require('chalk')
- const logger = require('../../src/server/logger')
- describe('Test Logger secret mask', () => {
- beforeAll(() => {
- logger.setMaskables(['ToBeMasked1', 'toBeMasked2', 'toBeMasked(And)?Escaped'])
- })
- test('masks secret values present in log.info messages', () => {
- let loggedMessage = null
- // override the default console.log to capture the logged message
- const defaultConsoleLog = console.log
- console.log = (logPrefix, message) => {
- loggedMessage = message
- defaultConsoleLog(logPrefix, message)
- }
- logger.info('this info has ToBeMasked1 and toBeMasked2 and case-insensitive TOBEMasKED2')
- // restore the default console.log before using "expect" to avoid weird log behaviors
- console.log = defaultConsoleLog
- const exptectedMsg = 'this info has ****** and ****** and case-insensitive ******'
- expect(loggedMessage).toBeTruthy()
- expect(loggedMessage).toBe(exptectedMsg)
- })
- test('masks secret values present in log.warn messages', () => {
- let loggedMessage = null
- // override the default console.log to capture the logged message
- const defaultConsoleLog = console.log
- console.log = (logPrefix, message) => {
- loggedMessage = message
- defaultConsoleLog(logPrefix, message)
- }
- logger.warn('this warning has ToBeMasked1 and toBeMasked2 and case-insensitive TOBEMasKED2')
- // restore the default console.log before using "expect" to avoid weird log behaviors
- console.log = defaultConsoleLog
- const exptectedMsg = chalk.bold.yellow('this warning has ****** and ****** and case-insensitive ******')
- expect(loggedMessage).toBeTruthy()
- expect(loggedMessage).toBe(exptectedMsg)
- })
- test('masks secret values present in log.error messages', () => {
- let loggedMessage = null
- // override the default console.log to capture the logged message
- const defaultConsoleLog = console.log
- console.log = (logPrefix, message) => {
- loggedMessage = message
- defaultConsoleLog(logPrefix, message)
- }
- logger.error(new Error('this error has ToBeMasked1 and toBeMasked2 and case-insensitive TOBEMasKED2'))
- // restore the default console.log before using "expect" to avoid weird log behaviors
- console.log = defaultConsoleLog
- const exptectedMsg = chalk.bold.red('Error: this error has ****** and ****** and case-insensitive ******')
- expect(loggedMessage).toBeTruthy()
- expect(loggedMessage).toBe(exptectedMsg)
- })
- test('masks secret values present in log.error stack trace', () => {
- let loggedMessage = null
- // override the default console.log to capture the logged message
- const defaultConsoleLog = console.log
- console.log = (logPrefix, message) => {
- loggedMessage = message
- defaultConsoleLog(logPrefix, message)
- }
- const err = new Error('this error has ToBeMasked1 and toBeMasked2 and case-insensitive TOBEMasKED2')
- logger.error(err, '', '', true)
- // restore the default console.log before using "expect" to avoid weird log behaviors
- console.log = defaultConsoleLog
- const exptectedMsg = chalk.bold.red('Error: this error has ****** and ****** and case-insensitive ******')
- expect(loggedMessage).toBeTruthy()
- expect(loggedMessage.startsWith(exptectedMsg)).toBe(true)
- expect(loggedMessage.includes('ToBeMasked1')).toBe(false)
- expect(loggedMessage.includes('toBeMasked2')).toBe(false)
- expect(loggedMessage.includes('TOBEMasKED2')).toBe(false)
- })
- test('escape regex characters from secret values before masking them', () => {
- let loggedMessage = null
- // override the default console.log to capture the logged message
- const defaultConsoleLog = console.log
- console.log = (logPrefix, message) => {
- loggedMessage = message
- defaultConsoleLog(logPrefix, message)
- }
- logger.warn('this warning has ToBeMasked(And)?Escaped but not toBeMaskedEscaped ')
- // restore the default console.log before using "expect" to avoid weird log behaviors
- console.log = defaultConsoleLog
- const exptectedMsg = chalk.bold.yellow('this warning has ****** but not toBeMaskedEscaped ')
- expect(loggedMessage).toBeTruthy()
- expect(loggedMessage).toBe(exptectedMsg)
- })
- })
|