From f6ae52f6fe2ce0ec1404da5b5e08d4e6d4cd275d Mon Sep 17 00:00:00 2001 From: Niraj Nandish Date: Thu, 28 Mar 2024 21:44:31 +0530 Subject: [PATCH] fix(api): send msUsername in get session user endpoint (#54050) Co-authored-by: Shaun Hamilton --- api/src/routes/user.test.ts | 17 ++++++++++++++++- api/src/routes/user.ts | 19 +++++++++++++------ api/src/schemas.ts | 3 ++- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/api/src/routes/user.test.ts b/api/src/routes/user.test.ts index 57822dc6c34..1f45f89ab1d 100644 --- a/api/src/routes/user.test.ts +++ b/api/src/routes/user.test.ts @@ -499,7 +499,7 @@ describe('userRoutes', () => { }); }); - describe('user/get-user-session', () => { + describe('/user/get-user-session', () => { beforeEach(async () => { await fastifyTestInstance.prisma.user.updateMany({ where: { email: testUserData.email }, @@ -590,6 +590,21 @@ describe('userRoutes', () => { expect(tokenData.id).toBe(userToken); }); + test('GET returns the msUsername if it exists', async () => { + await fastifyTestInstance.prisma.msUsername.create({ + data: msUsernameData[0] as (typeof msUsernameData)[0] + }); + + const msUsernames = await fastifyTestInstance.prisma.msUsername.count(); + expect(msUsernames).toBe(1); + + const response = await superGet('/user/get-session-user'); + + const { msUsername } = response.body.user.foobar; + + expect(msUsername).toBe(msUsernameData[0]?.msUsername); + }); + test('GET returns a minimal user when all optional properties are missing', async () => { // To get a minimal test user we first delete the existing one... await fastifyTestInstance.prisma.user.deleteMany({ diff --git a/api/src/routes/user.ts b/api/src/routes/user.ts index 236c0807969..028046a92c9 100644 --- a/api/src/routes/user.ts +++ b/api/src/routes/user.ts @@ -510,11 +510,17 @@ export const userGetRoutes: FastifyPluginCallbackTypebox = ( where: { userId: req.user!.id } }); - const [userToken, user, completedSurveys] = await Promise.all([ - userTokenP, - userP, - completedSurveysP - ]); + const msUsernameP = fastify.prisma.msUsername.findFirst({ + where: { userId: req.user?.id } + }); + + const [userToken, user, completedSurveys, msUsername] = + await Promise.all([ + userTokenP, + userP, + completedSurveysP, + msUsernameP + ]); if (!user?.username) { void res.code(500); @@ -556,7 +562,8 @@ export const userGetRoutes: FastifyPluginCallbackTypebox = ( twitter: normalizeTwitter(twitter), username: usernameDisplay || username, userToken: encodedToken, - completedSurveys: normalizeSurveys(completedSurveys) + completedSurveys: normalizeSurveys(completedSurveys), + msUsername: msUsername?.msUsername } }, result: user.username diff --git a/api/src/schemas.ts b/api/src/schemas.ts index a108834b404..052c7398d81 100644 --- a/api/src/schemas.ts +++ b/api/src/schemas.ts @@ -451,7 +451,8 @@ export const schemas = { }) ) }) - ) + ), + msUsername: Type.Optional(Type.String()) }) ), result: Type.String()