From 5c2588ee43c05b870dfdbabee57d534eabb30a9d Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 25 Aug 2020 02:18:01 +0100 Subject: [PATCH] new recursive result validation --- functions/index.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/functions/index.js b/functions/index.js index c835aae64..1679dab25 100644 --- a/functions/index.js +++ b/functions/index.js @@ -508,18 +508,27 @@ exports.testCompleted = functions.https.onRequest(async (request, response) => { let obj = request.obj; - let err = false; - Object.keys(obj).forEach((key) => { - let val = obj[key]; + function verifyValue(val) { + let errCount = 0; if (Array.isArray(val)) { - val.forEach((valarr) => { - if (!/^[0-9a-zA-Z._]+$/.test(valarr)) err = true; + //array + val.forEach((val2) => { + errCount += verifyValue(val2); + }); + } else if (typeof val === "object" && !Array.isArray(val)) { + //object + Object.keys(val).forEach((valkey) => { + errCount += verifyValue(val[valkey]); }); } else { - if (val === undefined || !/^[0-9a-zA-Z._]+$/.test(val)) err = true; + if (!/^[0-9a-zA-Z._]+$/.test(val)) errCount++; } - }); - if (err) { + return errCount; + } + + let errCount = verifyValue(obj); + console.log(errCount); + if (errCount > 0) { console.error( `error saving result for ${request.uid} - bad input - ${JSON.stringify( request.obj