From 6f034bb5dd89ce59b73a4af3b89762ba35d04a51 Mon Sep 17 00:00:00 2001 From: Keith Holliday Date: Sun, 28 May 2017 19:07:29 -0600 Subject: [PATCH] Fixed issue when repeat object is malformed (#8765) * Fixed issue when repeat object is malformed * Removed only * Changed numeric check to lodash isFinite * Removed newer lodash function --- test/common/shouldDo.test.js | 19 +++++++++++++++++++ website/common/script/cron.js | 1 + 2 files changed, 20 insertions(+) diff --git a/test/common/shouldDo.test.js b/test/common/shouldDo.test.js index 144a2663be..5f2fe4494f 100644 --- a/test/common/shouldDo.test.js +++ b/test/common/shouldDo.test.js @@ -322,6 +322,25 @@ describe('shouldDo', () => { } }); + it('returns false and ignore malformed repeat object', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + errors: 'errors', + }; + + for (let weekday of [0, 1, 2, 3, 4, 5, 6]) { + day = moment().day(weekday).toDate(); + + expect(shouldDo(day, dailyTask, options)).to.equal(false); + } + }); + it('returns false if day of the week does not match and active on the day it matches', () => { dailyTask.repeat = { su: false, diff --git a/website/common/script/cron.js b/website/common/script/cron.js index bd6532278d..1205e15472 100644 --- a/website/common/script/cron.js +++ b/website/common/script/cron.js @@ -113,6 +113,7 @@ export function shouldDo (day, dailyTask, options = {}) { if (dailyTask.repeat) { for (let [repeatDay, active] of Object.entries(dailyTask.repeat)) { + if (!isFinite(DAY_MAPPING_STRING_TO_NUMBER[repeatDay])) continue; // eslint-disable-line no-continue if (active) daysOfTheWeek.push(parseInt(DAY_MAPPING_STRING_TO_NUMBER[repeatDay], 10)); } }