diff --git a/api/hooks/sdtdLogs/LoggingObject.js b/api/hooks/sdtdLogs/LoggingObject.js index 2f3703434..3bc1f5cd5 100644 --- a/api/hooks/sdtdLogs/LoggingObject.js +++ b/api/hooks/sdtdLogs/LoggingObject.js @@ -186,7 +186,7 @@ class LoggingObject extends EventEmitter { if (!this.slowmode) { sails.log.info( `SdtdLogs - Server ${ - this.serverId + this.serverId } has failed ${counter} times. Changing interval time. Server was last successful on ${prettyLastSuccess.toLocaleDateString()} ${prettyLastSuccess.toLocaleTimeString()}` ); this.slowmode = true; diff --git a/api/hooks/sdtdLogs/logProcessor.js b/api/hooks/sdtdLogs/logProcessor.js index 4f219f99a..d4e44c9dc 100644 --- a/api/hooks/sdtdLogs/logProcessor.js +++ b/api/hooks/sdtdLogs/logProcessor.js @@ -2,7 +2,8 @@ const handleLogLine = require("./handleLogLine"); module.exports = async function (job) { const resultLogs = []; - let lastLogLine = job.data.lastLogLine; + let lastLogLine = parseInt(job.data.lastLogLine, 10); + // If latest log line is not found, get it from the server if (!lastLogLine) { const webUIUpdate = await sails.helpers.sdtdApi.getWebUIUpdates(SdtdServer.getAPIConfig(job.data.server)); diff --git a/test/integration/hooks/sdtdLogs/logProcessor.test.js b/test/integration/hooks/sdtdLogs/logProcessor.test.js index 3a40c969d..8ed3c0a53 100644 --- a/test/integration/hooks/sdtdLogs/logProcessor.test.js +++ b/test/integration/hooks/sdtdLogs/logProcessor.test.js @@ -2,6 +2,49 @@ const expect = require("chai").expect; const logProcessor = require("../../../../api/hooks/sdtdLogs/logProcessor"); describe('logProcessor', function () { + + describe('It resets lastLogLine if job.data.lastLogLine is falsey', function () { + beforeEach(function () { + sails.helpers.sdtdApi.getWebUIUpdates = sandbox.stub().returns({ newlogs: 2 }); + sails.helpers.sdtdApi.getLog = sandbox.stub().returns({ + entries: [ + { + date: '2020-07-01', + time: '23:58:38', + uptime: '127.041', + msg: "Executing command 'say test' by WebCommandResult_for_say", + trace: '', + type: 'Log' + }, + { + date: '2020-07-01', + time: '23:58:38', + uptime: '127.065', + msg: "Chat (from '-non-player-', entity id '-1', to 'Global'): 'Server': test", + trace: '', + type: 'Log' + } + ], + lastLine: 5 + }); + + }) + + it('resets lastLogLine if job.data.lastLogLine is 0', async function () { + const result = await logProcessor({ data: { lastLogLine: 0, server: sails.testServer } }); + expect(sails.helpers.sdtdApi.getWebUIUpdates).to.have.been.callCount(1); + expect(result.serverId).to.eq(sails.testServer.id); + expect(result.lastLogLine).to.eq(5); + }); + + it('resets lastLogLine if job.data.lastLogLine is "0"', async function () { + const result = await logProcessor({ data: { lastLogLine: "0", server: sails.testServer } }); + expect(sails.helpers.sdtdApi.getWebUIUpdates).to.have.been.callCount(1); + expect(result.serverId).to.eq(sails.testServer.id); + expect(result.lastLogLine).to.eq(5); + }); + }) + it('Confirm able to fetch log messages', async function () { sandbox.stub(sails.helpers.sdtdApi, "getWebUIUpdates").callsFake(async function () { return { diff --git a/test/lifecycle.test.js b/test/lifecycle.test.js index 45bc455ce..64a15782b 100644 --- a/test/lifecycle.test.js +++ b/test/lifecycle.test.js @@ -15,7 +15,7 @@ process.env.CSMM_DONATOR_TIER = 'patron'; delete process.env.REDISSTRING; delete process.env.PORT; -beforeEach(function() { +beforeEach(function () { MockDate.set('2020-05-01T01:20:05+0000'); }); before(() => { @@ -31,13 +31,13 @@ beforeEach(() => { // Before running any tests... before(function (done) { - async function onComplete (err) { + async function onComplete(err) { if (err) { throw err; } let testUser = await User.create({ - steamId: faker.random.number({min: 0, max: 9999999999999}), + steamId: faker.random.number({ min: 0, max: 9999999999999 }), username: faker.internet.userName() }).fetch(); @@ -84,6 +84,10 @@ before(function (done) { csrf: false }, + + port: process.env.CSMM_PORT || 8500, + + datastores: { default: { adapter: 'sails-disk', @@ -110,17 +114,17 @@ after(function (done) { sails.lower(done); }); -beforeEach(function(done) { +beforeEach(function (done) { destroyFuncs = []; for (modelName in sails.models) { - destroyFuncs.push(function(callback) { + destroyFuncs.push(function (callback) { sails.models[modelName].destroy({}) - .exec(function(err) { - callback(null, err) - }); + .exec(function (err) { + callback(null, err) + }); }) } - async.parallel(destroyFuncs, function(err, results) { + async.parallel(destroyFuncs, function (err, results) { done(err); }) });