diff --git a/backend/src/controllers/recording.controller.ts b/backend/src/controllers/recording.controller.ts index 5c525ec..633c24a 100644 --- a/backend/src/controllers/recording.controller.ts +++ b/backend/src/controllers/recording.controller.ts @@ -20,7 +20,7 @@ export const startRecording = async (req: Request, res: Response) => { const recordingInfo = await recordingService.startRecording(roomId); res.setHeader( 'Location', - `${req.protocol}://${req.get('host')}${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/recordings/${recordingInfo.recordingId}` + `${req.protocol}://${req.get('host')}${INTERNAL_CONFIG.API_BASE_PATH_V1}/recordings/${recordingInfo.recordingId}` ); return res.status(201).json(recordingInfo); @@ -114,7 +114,7 @@ export const stopRecording = async (req: Request, res: Response) => { const recordingInfo = await recordingService.stopRecording(recordingId); res.setHeader( 'Location', - `${req.protocol}://${req.get('host')}${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/recordings/${recordingId}` + `${req.protocol}://${req.get('host')}${INTERNAL_CONFIG.API_BASE_PATH_V1}/recordings/${recordingId}` ); return res.status(202).json(recordingInfo); } catch (error) { diff --git a/backend/tests/helpers/assertion-helpers.ts b/backend/tests/helpers/assertion-helpers.ts index 558b571..410f8e6 100644 --- a/backend/tests/helpers/assertion-helpers.ts +++ b/backend/tests/helpers/assertion-helpers.ts @@ -182,15 +182,12 @@ const expectObjectFields = (obj: any, present: string[] = [], absent: string[] = }); }; +// Validate recording location header in the response export const expectValidRecordingLocationHeader = (response: any) => { - // const locationRegex = new RegExp( - // `^http://127\\.0\\.0\\.1:\\d+/+${RECORDINGS_PATH.replace(/\//g, '\\/')}/${recordingId}$` - // ); - // expect(response.headers.location).toMatch(locationRegex); - expect(response.headers.location).toBeDefined(); - expect(response.headers.location).toContain('127.0.0.1'); - expect(response.headers.location).toContain(RECORDINGS_PATH); - expect(response.headers.location).toContain(response.body.recordingId); + const locationHeader = response.headers.location; + expect(locationHeader).toBeDefined(); + const locationHeaderUrl = new URL(locationHeader); + expect(locationHeaderUrl.pathname).toBe(`${INTERNAL_CONFIG.API_BASE_PATH_V1}/recordings/${response.body.recordingId}`); }; /** @@ -326,7 +323,12 @@ export const expectSuccessRecordingMediaResponse = ( export const expectValidStartRecordingResponse = (response: any, roomId: string) => { expect(response.status).toBe(201); expect(response.body).toHaveProperty('recordingId'); + + expectValidRecordingLocationHeader(response); + const recordingId = response.body.recordingId; + expect(recordingId).toBeDefined(); + expect(recordingId).toContain(roomId); expect(response.body).toHaveProperty('roomId', roomId); expect(response.body).toHaveProperty('startDate'); @@ -346,6 +348,8 @@ export const expectValidStopRecordingResponse = (response: any, recordingId: str expect(response.body).toHaveProperty('filename'); expect(response.body).toHaveProperty('startDate'); expect(response.body).toHaveProperty('duration', expect.any(Number)); + + expectValidRecordingLocationHeader(response); }; export const expectValidGetRecordingResponse = ( diff --git a/backend/tests/integration/api/recordings/start-recording.test.ts b/backend/tests/integration/api/recordings/start-recording.test.ts index 13f84b4..2fb7af4 100644 --- a/backend/tests/integration/api/recordings/start-recording.test.ts +++ b/backend/tests/integration/api/recordings/start-recording.test.ts @@ -4,7 +4,6 @@ import { errorRoomNotFound } from '../../../../src/models/error.model.js'; import { MeetRoom } from '../../../../src/typings/ce/index.js'; import { expectValidationError, - expectValidRecordingLocationHeader, expectValidStartRecordingResponse, expectValidStopRecordingResponse } from '../../../helpers/assertion-helpers.js'; @@ -56,7 +55,6 @@ describe('Recording API Tests', () => { const recordingId = response.body.recordingId; expectValidStartRecordingResponse(response, room.roomId); - expectValidRecordingLocationHeader(response); const stopResponse = await stopRecording(recordingId, moderatorCookie); expectValidStopRecordingResponse(stopResponse, recordingId, room.roomId); }); @@ -66,8 +64,6 @@ describe('Recording API Tests', () => { const recordingId = response.body.recordingId; expectValidStartRecordingResponse(response, room.roomId); - expectValidRecordingLocationHeader(response); - const storageService = container.get(MeetStorageService); const recSecrets = await storageService.getAccessRecordingSecrets(recordingId);