UNPKG

kinvey-flex-sdk

Version:

SDK for creating Kinvey Flex Services

121 lines (116 loc) 4.4 kB
/** * Copyright (c) 2018 Kinvey Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ const sinon = require('sinon'); const uuid = require('uuid'); const stdout = require('test-console').stdout; const logger = require('../../../lib/service/logger'); /** * Helper function to generate sample logging output */ function generateLogOutput(message, logThreshold) { return `{"message":"${message}","level":"${logThreshold}"}\n`; } describe('sdk logging', () => { let logString = ''; let sampleMessage = ''; describe('log levels', () => { beforeEach(() => { logString = uuid.v4(); }); describe('info', () => { it('successfully logs an \'info\' message', (done) => { sampleMessage = generateLogOutput(logString, 'info'); const spy = sinon.spy(logger, 'info'); logger.info(logString); spy.getCall(0).args[0].should.eql(logString); spy.returnValues[0].should.eql(sampleMessage); logger.info.restore(); done(); }); it('writes the correct output to stdout (on multiple lines)', (done) => { sampleMessage = generateLogOutput(logString, 'info'); const inspect = stdout.inspect(); logger.info(logString); logger.info(logString); inspect.restore(); inspect.output[0].should.eql(sampleMessage); inspect.output[1].should.eql(sampleMessage); done(); }); }); describe('warn', () => { it('successfully logs an \'warning\' message', (done) => { sampleMessage = generateLogOutput(logString, 'warning'); const spy = sinon.spy(logger, 'warn'); logger.warn(logString); spy.getCall(0).args[0].should.eql(logString); spy.returnValues[0].should.eql(sampleMessage); logger.warn.restore(); done(); }); it('writes the correct output to stdout (on multiple lines)', (done) => { sampleMessage = generateLogOutput(logString, 'warning'); const inspect = stdout.inspect(); logger.warn(logString); logger.warn(logString); inspect.restore(); inspect.output[0].should.eql(sampleMessage); inspect.output[1].should.eql(sampleMessage); done(); }); }); describe('error', () => { it('successfully logs an \'error\' message', (done) => { sampleMessage = generateLogOutput(logString, 'error'); const spy = sinon.spy(logger, 'error'); logger.error(logString); spy.getCall(0).args[0].should.eql(logString); spy.returnValues[0].should.eql(sampleMessage); logger.error.restore(); done(); }); it('writes the correct output to stdout (on multiple lines)', (done) => { sampleMessage = generateLogOutput(logString, 'error'); const inspect = stdout.inspect(); logger.error(logString); logger.error(logString); inspect.restore(); inspect.output[0].should.eql(sampleMessage); inspect.output[1].should.eql(sampleMessage); done(); }); }); describe('fatal', () => { it('successfully logs an \'fatal\' message', (done) => { sampleMessage = generateLogOutput(logString, 'fatal'); const spy = sinon.spy(logger, 'fatal'); logger.fatal(logString); spy.getCall(0).args[0].should.eql(logString); spy.returnValues[0].should.eql(sampleMessage); logger.fatal.restore(); done(); }); it('writes the correct output to stdout (on multiple lines)', (done) => { sampleMessage = generateLogOutput(logString, 'fatal'); const inspect = stdout.inspect(); logger.fatal(logString); logger.fatal(logString); inspect.restore(); inspect.output[0].should.eql(sampleMessage); inspect.output[1].should.eql(sampleMessage); done(); }); }); }); });