From a71c39d6a8c5ed49adf376f711e78800c7535d93 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 25 Jun 2024 02:29:49 +0200 Subject: [PATCH] feat(backend): correct password for open rooms query --- .../graphql/resolvers/RoomResolver.spec.ts | 23 ++++++++++++++-- backend/src/graphql/resolvers/RoomResolver.ts | 26 ++++++++++++++----- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/backend/src/graphql/resolvers/RoomResolver.spec.ts b/backend/src/graphql/resolvers/RoomResolver.spec.ts index dad52cac5..af19571e0 100644 --- a/backend/src/graphql/resolvers/RoomResolver.spec.ts +++ b/backend/src/graphql/resolvers/RoomResolver.spec.ts @@ -573,7 +573,17 @@ describe('RoomResolver', () => { }) }) - describe('one attendee', () => { + describe('one attendee and meeting in DB', () => { + beforeAll(async () => { + await prisma.meeting.create({ + data: { + name: 'Dreammall Entwicklung', + meetingID: 'Dreammall-Entwicklung', + attendeePW: '1234', + }, + }) + }) + beforeEach(() => { getMeetingsMock.mockResolvedValue([ { @@ -617,7 +627,8 @@ describe('RoomResolver', () => { ]) }) - it('returns empty array', async () => { + it('returns room with attendee', async () => { + jest.clearAllMocks() await expect( testServer.executeOperation( { @@ -655,6 +666,14 @@ describe('RoomResolver', () => { }, }) }) + + it('calls joinMeetingLink with correct PW', () => { + expect(joinMeetingLinkMock).toBeCalledWith({ + fullName: 'User', + meetingID: 'Dreammall-Entwicklung', + password: '1234', + }) + }) }) describe('some attendee', () => { diff --git a/backend/src/graphql/resolvers/RoomResolver.ts b/backend/src/graphql/resolvers/RoomResolver.ts index 84a58c18a..70e3ddcf6 100644 --- a/backend/src/graphql/resolvers/RoomResolver.ts +++ b/backend/src/graphql/resolvers/RoomResolver.ts @@ -135,17 +135,31 @@ export class RoomResolver { const { user } = context if (!user) return [] const meetings = await getMeetings() - return meetings.map( - (m: MeetingInfo) => - new OpenRoom( + + if (meetings.length) { + const dbMeetingsPwMap = await prisma.meeting.findMany({ + where: { + meetingID: { in: meetings.map((m: MeetingInfo) => m.meetingID) }, + }, + select: { + meetingID: true, + attendeePW: true, + }, + }) + + return meetings.map((m: MeetingInfo) => { + const pw = dbMeetingsPwMap.find((pw) => pw.meetingID === m.meetingID) + return new OpenRoom( m, joinMeetingLink({ fullName: user.name, meetingID: m.meetingID, - password: '', + password: pw?.attendeePW ? pw.attendeePW : '', }), - ), - ) + ) + }) + } + return [] } @Query(() => String, { nullable: true })