From c7a8b183d3cba3917482c40fce960b32bd95630a Mon Sep 17 00:00:00 2001 From: Shaun Hamilton Date: Mon, 29 Sep 2025 15:26:29 +0200 Subject: [PATCH] fix(api): 400 for exam-challenge route with no params (#62404) --- .../exam-environment/routes/exam-environment.test.ts | 10 ++++++++++ api/src/exam-environment/routes/exam-environment.ts | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/api/src/exam-environment/routes/exam-environment.test.ts b/api/src/exam-environment/routes/exam-environment.test.ts index ca4e3f00374..9c73f3e22f5 100644 --- a/api/src/exam-environment/routes/exam-environment.test.ts +++ b/api/src/exam-environment/routes/exam-environment.test.ts @@ -1304,6 +1304,16 @@ describe('/exam-environment/', () => { ); expect(res3.status).toBe(200); }); + + it('should return 400 if neither challengeId or examId are provided', async () => { + const res = await superGet(`/exam-environment/exam-challenge`); + expect(res).toMatchObject({ + status: 400, + body: { + code: 'FCC_ERR_EXAM_ENVIRONMENT' + } + }); + }); }); }); }); diff --git a/api/src/exam-environment/routes/exam-environment.ts b/api/src/exam-environment/routes/exam-environment.ts index 4346ca412ee..929b14f8361 100644 --- a/api/src/exam-environment/routes/exam-environment.ts +++ b/api/src/exam-environment/routes/exam-environment.ts @@ -1010,6 +1010,16 @@ export async function getExamChallenge( logger.info({ challengeId, examId }); + if (!challengeId && !examId) { + logger.warn('No challenge or exam id provided.'); + void reply.code(400); + return reply.send( + ERRORS.FCC_ERR_EXAM_ENVIRONMENT( + 'Must provide either a challengeId or examId.' + ) + ); + } + const maybeData = await mapErr( this.prisma.examEnvironmentChallenge.findMany({ where: {