- Move all of the winston logic from FileLoggerAdapter to WinstonLoggerAdapter - Export WinstonLoggerAdapter so it can be sublcassed - Expost the ability to add adittional transports to logger - Import FirehoseLoggerAdapter alongside other adapters so it can be configured.
68 lines
3.1 KiB
JavaScript
68 lines
3.1 KiB
JavaScript
'use strict';
|
|
var LoggerController = require('../src/Controllers/LoggerController').LoggerController;
|
|
var WinstonLoggerAdapter = require('../src/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter;
|
|
|
|
describe("Cloud Code Logger", () => {
|
|
it("should expose log to functions", (done) => {
|
|
var logController = new LoggerController(new WinstonLoggerAdapter());
|
|
|
|
Parse.Cloud.define("loggerTest", (req, res) => {
|
|
req.log.info('logTest', 'info log', {info: 'some log' });
|
|
req.log.error('logTest','error log', {error: 'there was an error'});
|
|
res.success({});
|
|
});
|
|
|
|
Parse.Cloud.run('loggerTest').then(() => {
|
|
return logController.getLogs({from: Date.now() - 500, size: 1000});
|
|
}).then((res) => {
|
|
expect(res.length).not.toBe(0);
|
|
let lastLogs = res.slice(0, 3);
|
|
let cloudFunctionMessage = lastLogs[0];
|
|
let errorMessage = lastLogs[1];
|
|
let infoMessage = lastLogs[2];
|
|
expect(cloudFunctionMessage.level).toBe('info');
|
|
expect(cloudFunctionMessage.params).toEqual({});
|
|
expect(cloudFunctionMessage.message).toEqual('Ran cloud function loggerTest with:\nInput: {}\nResult: {}');
|
|
expect(cloudFunctionMessage.functionName).toEqual('loggerTest');
|
|
expect(errorMessage.level).toBe('error');
|
|
expect(errorMessage.error).toBe('there was an error');
|
|
expect(errorMessage.message).toBe('logTest error log');
|
|
expect(infoMessage.level).toBe('info');
|
|
expect(infoMessage.info).toBe('some log');
|
|
expect(infoMessage.message).toBe('logTest info log');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should expose log to trigger", (done) => {
|
|
var logController = new LoggerController(new WinstonLoggerAdapter());
|
|
|
|
Parse.Cloud.beforeSave("MyObject", (req, res) => {
|
|
req.log.info('beforeSave MyObject', 'info log', {info: 'some log' });
|
|
req.log.error('beforeSave MyObject','error log', {error: 'there was an error'});
|
|
res.success({});
|
|
});
|
|
|
|
let obj = new Parse.Object('MyObject');
|
|
obj.save().then(() => {
|
|
return logController.getLogs({from: Date.now() - 500, size: 1000})
|
|
}).then((res) => {
|
|
expect(res.length).not.toBe(0);
|
|
let lastLogs = res.slice(0, 3);
|
|
let cloudTriggerMessage = lastLogs[0];
|
|
let errorMessage = lastLogs[1];
|
|
let infoMessage = lastLogs[2];
|
|
expect(cloudTriggerMessage.level).toBe('info');
|
|
expect(cloudTriggerMessage.input).toEqual({});
|
|
expect(cloudTriggerMessage.message).toEqual('beforeSave triggered for MyObject\nInput: {}\nResult: {}');
|
|
expect(errorMessage.level).toBe('error');
|
|
expect(errorMessage.error).toBe('there was an error');
|
|
expect(errorMessage.message).toBe('beforeSave MyObject error log');
|
|
expect(infoMessage.level).toBe('info');
|
|
expect(infoMessage.info).toBe('some log');
|
|
expect(infoMessage.message).toBe('beforeSave MyObject info log');
|
|
done();
|
|
});
|
|
});
|
|
});
|