diff --git a/api-server/server/boot/challenge.js b/api-server/server/boot/challenge.js index 4ef3a5db1f..52d395d150 100644 --- a/api-server/server/boot/challenge.js +++ b/api-server/server/boot/challenge.js @@ -199,7 +199,7 @@ export function isValidChallengeCompletion(req, res, next) { log('isObjectId', id, ObjectID.isValid(id)); return res.sendStatus(403); } - if ('challengeType' in req.body && !isNumeric(challengeType)) { + if ('challengeType' in req.body && !isNumeric(String(challengeType))) { log('challengeType', challengeType, isNumeric(challengeType)); return res.sendStatus(403); } diff --git a/api-server/server/boot_tests/challenge.test.js b/api-server/server/boot_tests/challenge.test.js index ca98f9017f..255a18fef3 100644 --- a/api-server/server/boot_tests/challenge.test.js +++ b/api-server/server/boot_tests/challenge.test.js @@ -310,6 +310,21 @@ describe('boot/challenge', () => { expect(next.called).toBe(true); }); + + it('can handle an "int" challengeType', () => { + const req = mockReq({ + body: { + id: validObjectId, + challengeType: 1 + } + }); + const res = mockRes(); + const next = sinon.spy(); + + isValidChallengeCompletion(req, res, next); + + expect(next.called).toBe(true); + }); }); xdescribe('modernChallengeCompleted');