sidelines-logz
Version:
logging sdk for logz.io
85 lines (79 loc) • 3.67 kB
JavaScript
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', () => {});
});