UNPKG

sidelines-logz

Version:

logging sdk for logz.io

85 lines (79 loc) 3.67 kB
const logzio = require('logzio-nodejs'); const Logger = require('../logger'); jest.mock('logzio-nodejs'); describe('Logger.init', () => { afterEach(() => { jest.resetModules(); jest.resetAllMocks(); }); test('should throw an exception when accessToken,serviceName or environment is missing', () => { expect(() => { Logger.init({}); }).toThrowErrorMatchingInlineSnapshot(`"Must provide access token for the logger"`); expect(() => { Logger.init({ accessToken: 'ACCESS_TOKEN' }); }).toThrowErrorMatchingInlineSnapshot(`"Must provide serviceName for the logger"`); expect(() => { Logger.init({ accessToken: 'ACCESS_TOKEN', serviceName: 'SERVICE_NAME' }); }).toThrowErrorMatchingInlineSnapshot(`"Must provide environment for the logger"`); Logger.init({ accessToken: 'ACCESS_TOKEN', serviceName: 'SERVICE_NAME', environment: 'production' }); Logger.init({ isMonitor: true, accessToken: 'ACCESS_TOKEN' }); expect(logzio.createLogger).toHaveBeenCalledTimes(2); }); test('should throw an error if we try to log before init', () => { const Logger = require('../logger'); expect(() => { Logger.error({ message: 'SomeMessage' }); }).toThrowErrorMatchingInlineSnapshot(`"Must init the logger before trying to log"`); }); }); describe('Logger In Staging/Production Environment', () => { afterEach(() => { jest.resetModules(); jest.resetAllMocks(); }); test('should not log if environment is test', () => { const logMock = jest.fn(); logzio.createLogger.mockReturnValue({ log: logMock, }); Logger.init({ accessToken: 'ACCESS_TOKEN', serviceName: 'SERVICE_NAME', environment: 'test' }); expect(logzio.createLogger).toHaveBeenCalledTimes(0); Logger.error({ message: 'someMessage' }); expect(logMock).toHaveBeenCalledTimes(0); }); test('should not log if environment is test and access token is undefined', () => { const logMock = jest.fn(); logzio.createLogger.mockReturnValue({ log: logMock, }); Logger.init({ accessToken: undefined, serviceName: 'SERVICE_NAME', environment: 'test' }); expect(logzio.createLogger).toHaveBeenCalledTimes(0); Logger.error({ message: 'someMessage' }); expect(logMock).toHaveBeenCalledTimes(0); }); test('when init with isMonitor=true and serviceName and environment send on the log', () => { const logMock = jest.fn(); logzio.createLogger.mockReturnValue({ log: logMock, }); Logger.init({ isMonitor: true, accessToken: 'ACCESS_TOKEN' }); expect(logzio.createLogger).toHaveBeenCalledTimes(1); Logger.info({ message: 'someMessage', serviceName: 'SERVICE_NAME', environment: 'production' }); expect(logMock).toHaveBeenCalledTimes(1); }); test('when init with isMonitor=true and serviceName and environment send on the log', () => { const logMock = jest.fn(); logzio.createLogger.mockReturnValue({ log: logMock, }); Logger.init({ isMonitor: true, accessToken: 'ACCESS_TOKEN' }); expect(logzio.createLogger).toHaveBeenCalledTimes(1); Logger.info({ message: 'someMessage' }); expect(logMock).toHaveBeenCalledTimes(1); }); test('when Error is passed an Error should set message as the Error.message', () => { Logger.info({}); }); test('when Error has no message name try to set a message from the Error', () => {}); });