openvidu/backend/tests/integration/api/meetings/delete-participant.test.ts

74 lines
2.4 KiB
TypeScript

import { afterAll, beforeAll, beforeEach, describe, expect, it } from '@jest/globals';
import { container } from '../../../../src/config/index.js';
import { OpenViduMeetError } from '../../../../src/models/error.model.js';
import { LiveKitService } from '../../../../src/services/index.js';
import {
deleteAllRooms,
deleteParticipant,
deleteRoom,
disconnectFakeParticipants,
startTestServer
} from '../../../helpers/request-helpers.js';
import { RoomData, setupSingleRoom } from '../../../helpers/test-scenarios.js';
const participantIdentity = 'TEST_PARTICIPANT';
describe('Meetings API Tests', () => {
let livekitService: LiveKitService;
let roomData: RoomData;
beforeAll(async () => {
startTestServer();
livekitService = container.get(LiveKitService);
});
afterAll(async () => {
await disconnectFakeParticipants();
await deleteAllRooms();
});
describe('Delete Participant Tests', () => {
beforeEach(async () => {
roomData = await setupSingleRoom(true);
});
it('should remove participant from LiveKit room', async () => {
// Check if participant exists before deletion
const participant = await livekitService.getParticipant(roomData.room.roomId, participantIdentity);
expect(participant).toBeDefined();
expect(participant.identity).toBe(participantIdentity);
// Delete the participant
const response = await deleteParticipant(roomData.room.roomId, participantIdentity, roomData.moderatorCookie);
expect(response.status).toBe(200);
// Check if the participant has been removed from LiveKit
try {
await livekitService.getParticipant(roomData.room.roomId, participantIdentity);
} catch (error) {
expect((error as OpenViduMeetError).statusCode).toBe(404);
}
});
it('should fail with 404 if participant does not exist', async () => {
const response = await deleteParticipant(
roomData.room.roomId,
'NON_EXISTENT_PARTICIPANT',
roomData.moderatorCookie
);
expect(response.status).toBe(404);
expect(response.body.error).toBe('Participant Error');
});
it('should fail with 404 if room does not exist', async () => {
// Delete the room to ensure it does not exist
let response = await deleteRoom(roomData.room.roomId, { force: true });
expect(response.status).toBe(204);
response = await deleteParticipant(roomData.room.roomId, participantIdentity, roomData.moderatorCookie);
expect(response.status).toBe(404);
expect(response.body.error).toBe('Room Error');
});
});
});