diff --git a/src/grader_interface.ts b/src/grader_interface.ts index d38b2a0..4b517b1 100644 --- a/src/grader_interface.ts +++ b/src/grader_interface.ts @@ -166,10 +166,6 @@ WHERE tm_submissions.ID = :idSubmission throw new InvalidInputError('Cannot find source code associated with this submission'); } - if (!submissionData.answerToken && !appConfig.testMode.enabled && 'UserTest' !== submission.sMode) { - throw new InvalidInputError('Missing answerToken, required for this type of submission'); - } - let tests: TaskTest[] = []; if ('UserTest' === submission.sMode) { tests = await Db.execute('SELECT tm_tasks_tests.* FROM tm_tasks_tests WHERE idUser = :idUser and idPlatform = :idPlatform and idTask = :idTask and idSubmission = :idSubmission ORDER BY iRank ASC', { diff --git a/src/platform_interface.ts b/src/platform_interface.ts index 7c5969e..be2042f 100644 --- a/src/platform_interface.ts +++ b/src/platform_interface.ts @@ -49,7 +49,7 @@ export async function extractPlatformTaskTokenData(token: string|null|undefined, } } - if (!payload.idUser || (!payload.idItem && !payload.itemUrl)) { + if (undefined === payload.idUser || null === payload.idUser || (!payload.idItem && !payload.itemUrl)) { throw new InvalidInputError('Missing idUser or idItem in token'); } diff --git a/src/submissions.ts b/src/submissions.ts index 6955371..1ba3a97 100644 --- a/src/submissions.ts +++ b/src/submissions.ts @@ -168,9 +168,13 @@ export async function createSubmission(submissionData: SubmissionParameters): Pr throw new InvalidInputError(`Invalid task id: ${taskTokenData.taskId}`); } + const mode = submissionData.userTests && submissionData.userTests.length ? SubmissionMode.UserTest : SubmissionMode.Submitted; + let answerTokenData: PlatformAnswerTokenData|null = null; if (submissionData.answerToken) { answerTokenData = await extractPlatformAnswerTaskTokenData(submissionData.answerToken, submissionData.platform, submissionData.taskId); + } else if (!appConfig.testMode.enabled && 'UserTest' !== mode && '0' !== String(taskTokenData.payload.idUser)) { + throw new InvalidInputError('Missing answerToken, required for this type of submission'); } const submissionParamsKeys: (keyof PlatformTaskTokenPayload)[] = [ @@ -188,8 +192,6 @@ export async function createSubmission(submissionData: SubmissionParameters): Pr checkAnswerTokenValid(answerTokenData, taskTokenData); - const mode = submissionData.userTests && submissionData.userTests.length ? SubmissionMode.UserTest : SubmissionMode.Submitted; - // save source code (with bSubmission = 1) const idNewSourceCode = getRandomId(); const idSubmission = getRandomId();