UNPKG

@earnaha/auth0-action-helper

Version:
131 lines (104 loc) 3.96 kB
const { describe, beforeEach, expect, it } = require('@jest/globals'); const { itIf } = require('../utils/jest.js'); const LogHelper = require('../logger.js'); const config = { APP: 'jest', NODE_ENV: 'ENV_NAME' }; const { OPEN_SEARCH_NODE } = process.env; describe('LogHelper', () => { let logHelper; beforeEach(() => {}); it('should throw error if NODE_ENV or APP is not provided', () => { try { logHelper = new LogHelper(); } catch (error) { expect(error).toBeInstanceOf(Error); expect(error).toHaveProperty( 'message', 'NODE_ENV and APP are required', ); } }); it('should have have correct NODE_ENV and APP property', () => { logHelper = new LogHelper(config.NODE_ENV, config.APP).initialize(); expect(logHelper.logger).toHaveProperty('NODE_ENV', config.NODE_ENV); expect(logHelper.logger).toHaveProperty('APP', config.APP); }); it('should only have 1 stream(pino-prettify) output when env is test or local', () => { logHelper = new LogHelper('test', 'jest').initialize(); expect(logHelper.logger.streams).toHaveLength(1); expect(logHelper.logger.streams[0]).toHaveProperty('level', 'trace'); }); it('should only have 1 stream(pino-opensearch) output when env is NOT test or local', () => { logHelper = new LogHelper('beta', 'jest') .setOpenSearchNode('https://connection') .initialize(); expect(logHelper.logger.streams).toHaveLength(1); expect(logHelper.logger.streams[0]).toHaveProperty('level', 'trace'); }); it('should initial log level correctly - use trace in local or test', () => { logHelper = new LogHelper('test', 'jest').initialize(); expect(logHelper.logger).toHaveProperty('level', 'trace'); // default is trace logHelper.setLogLevel('info'); expect(logHelper.logger).toHaveProperty('level', 'info'); }); it('should change log level correctly - use info when NOT in local or test', () => { logHelper = new LogHelper('beta', 'jest').initialize(); expect(logHelper.logger).toHaveProperty('level', 'info'); // default is info logHelper.setLogLevel('trace'); expect(logHelper.logger).toHaveProperty('level', 'trace'); // default is info }); it('should shows log in console if option CONSOLE is true', () => { // if env is NOT test or local, streams should have 2 items logHelper = new LogHelper('beta', 'jest', { CONSOLE: true, }).initialize(); expect(logHelper.logger.streams).toHaveLength(1); }); it('should set meta correctly', () => { logHelper = new LogHelper('beta', 'jest', { CONSOLE: true, }) .setMeta({ metaSet: 'metaSet' }) .initialize(); logHelper.logger.info('test'); expect(logHelper._META).toHaveProperty('metaSet', 'metaSet'); }); it('should update meta correctly', () => { logHelper = new LogHelper('beta', 'jest', { CONSOLE: true, }) .setMeta({ metaSet: 'metaSet' }) .initialize(); logHelper.setMeta({ metaSet: 'metaUpdated' }); logHelper.setMeta({ metaSetNew: 'metaNew' }); logHelper.logger.info('test'); expect(logHelper._META).toHaveProperty('metaSet', 'metaUpdated'); expect(logHelper._META).toHaveProperty('metaSetNew', 'metaNew'); }); itIf(OPEN_SEARCH_NODE)( 'should shows log in console and opensearch if option CONSOLE is true', () => { // if env is NOT test or local, streams should have 2 items logHelper = new LogHelper('beta', 'jest', { CONSOLE: true, }) .setOpenSearchNode(OPEN_SEARCH_NODE) .initialize(); expect(logHelper.logger.streams).toHaveLength(2); }, ); itIf(OPEN_SEARCH_NODE)( 'should set Elasticsearch transport correctly and send log to opensearch when OPEN_SEARCH_NODE is provided and NOT in local or test', () => { logHelper = new LogHelper('beta', 'jest') .setOpenSearchNode(OPEN_SEARCH_NODE) .initialize(); logHelper.logger.info( { meta: {}, }, `Some message directly send to opensearch ${new Date()}`, ); expect(logHelper.logger.streams).toHaveLength(1); }, ); });