@earnaha/auth0-action-helper
Version:
AHA auth0 action helper
131 lines (104 loc) • 3.96 kB
JavaScript
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);
},
);
});