backend: update recording location header to use API_BASE_PATH_V1 and update test for validating location header

This commit is contained in:
Carlos Santos 2025-06-10 11:15:42 +02:00
parent cdcafd22d0
commit 66d63378fb
3 changed files with 14 additions and 14 deletions

View File

@ -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) {

View File

@ -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 = (

View File

@ -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);