diff --git a/backend/tests/helpers/request-helpers.ts b/backend/tests/helpers/request-helpers.ts index 40113ec..6d9dfe3 100644 --- a/backend/tests/helpers/request-helpers.ts +++ b/backend/tests/helpers/request-helpers.ts @@ -11,9 +11,7 @@ import { LIVEKIT_API_SECRET, MEET_ADMIN_SECRET, MEET_ADMIN_USER, - MEET_API_KEY, - MEET_SECRET, - MEET_USER + MEET_API_KEY } from '../../src/environment.js'; import { createApp, registerDependencies } from '../../src/server.js'; import { RecordingService, RoomService } from '../../src/services/index.js'; @@ -23,15 +21,10 @@ import { MeetRecordingAccess, MeetRoom, MeetRoomOptions, - UserRole, WebhookPreferences } from '../../src/typings/ce/index.js'; const CREDENTIALS = { - user: { - username: MEET_USER, - password: MEET_SECRET - }, admin: { username: MEET_ADMIN_USER, password: MEET_ADMIN_SECRET @@ -58,7 +51,7 @@ export const startTestServer = (): Express => { export const getAppearancePreferences = async () => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); const response = await request(app) .get(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences/appearance`) .set('Cookie', adminCookie) @@ -69,7 +62,7 @@ export const getAppearancePreferences = async () => { export const updateAppearancePreferences = async (preferences: any) => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); const response = await request(app) .put(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences/appearance`) .set('Cookie', adminCookie) @@ -80,7 +73,7 @@ export const updateAppearancePreferences = async (preferences: any) => { export const getWebbhookPreferences = async () => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); const response = await request(app) .get(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences/webhooks`) .set('Cookie', adminCookie) @@ -91,7 +84,7 @@ export const getWebbhookPreferences = async () => { export const updateWebbhookPreferences = async (preferences: WebhookPreferences) => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); const response = await request(app) .put(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences/webhooks`) .set('Cookie', adminCookie) @@ -103,7 +96,7 @@ export const updateWebbhookPreferences = async (preferences: WebhookPreferences) export const getSecurityPreferences = async () => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); const response = await request(app) .get(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences/security`) .set('Cookie', adminCookie) @@ -114,7 +107,7 @@ export const getSecurityPreferences = async () => { export const updateSecurityPreferences = async (preferences: any) => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); const response = await request(app) .put(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences/security`) .set('Cookie', adminCookie) @@ -122,36 +115,27 @@ export const updateSecurityPreferences = async (preferences: any) => { return response; }; -export const changeSecurityPreferences = async ({ - usersCanCreateRooms = true, - authRequired = true, - authMode = AuthMode.NONE -}) => { +export const changeSecurityPreferences = async (authMode: AuthMode) => { const response = await updateSecurityPreferences({ - roomCreationPolicy: { - allowRoomCreation: usersCanCreateRooms, - requireAuthentication: authRequired - }, authentication: { - authMode: authMode, - method: { + authMethod: { type: AuthType.SINGLE_USER - } + }, + authModeToAccessRoom: authMode } }); expect(response.status).toBe(200); }; /** - * Logs in a user as a specific role (admin or user) and returns the access token cookie + * Logs in a user and returns the access token cookie */ -export const loginUserAsRole = async (role: UserRole): Promise => { +export const loginUser = async (): Promise => { checkAppIsRunning(); - const credentials = role === UserRole.ADMIN ? CREDENTIALS.admin : CREDENTIALS.user; const response = await request(app) .post(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/auth/login`) - .send(credentials) + .send(CREDENTIALS.admin) .expect(200); const cookies = response.headers['set-cookie'] as unknown as string[]; @@ -201,7 +185,7 @@ export const getRoom = async (roomId: string, fields?: string) => { export const updateRoomPreferences = async (roomId: string, preferences: any) => { checkAppIsRunning(); - const adminCookie = await loginUserAsRole(UserRole.ADMIN); + const adminCookie = await loginUser(); return await request(app) .put(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/rooms/${roomId}`) .set('Cookie', adminCookie) @@ -311,9 +295,7 @@ export const generateParticipantToken = async (participantOptions: any) => { checkAppIsRunning(); // Disable authentication to generate the token - await changeSecurityPreferences({ - authMode: AuthMode.NONE - }); + await changeSecurityPreferences(AuthMode.NONE); // Generate the participant token const response = await request(app) @@ -350,9 +332,7 @@ export const refreshParticipantToken = async (participantOptions: any) => { checkAppIsRunning(); // Disable authentication to generate the token - await changeSecurityPreferences({ - authMode: AuthMode.NONE - }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app) .post(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/participants/token/refresh`) @@ -420,9 +400,7 @@ export const generateRecordingToken = async (roomId: string, secret: string) => checkAppIsRunning(); // Disable authentication to generate the token - await changeSecurityPreferences({ - authMode: AuthMode.NONE - }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app) .post(`${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/rooms/${roomId}/recording-token`) diff --git a/backend/tests/integration/api/global-preferences/security.test.ts b/backend/tests/integration/api/global-preferences/security.test.ts index b9532fa..77c8b68 100644 --- a/backend/tests/integration/api/global-preferences/security.test.ts +++ b/backend/tests/integration/api/global-preferences/security.test.ts @@ -8,15 +8,11 @@ import { import { AuthMode, AuthType } from '../../../../src/typings/ce/index.js'; const defaultPreferences = { - roomCreationPolicy: { - allowRoomCreation: true, - requireAuthentication: true - }, authentication: { - authMode: AuthMode.NONE, - method: { + authMethod: { type: AuthType.SINGLE_USER - } + }, + authModeToAccessRoom: AuthMode.NONE } }; @@ -36,15 +32,11 @@ describe('Security Preferences API Tests', () => { describe('Update security preferences', () => { it('should update security preferences with valid complete data', async () => { const validPreferences = { - roomCreationPolicy: { - allowRoomCreation: true, - requireAuthentication: true - }, authentication: { - authMode: AuthMode.ALL_USERS, - method: { + authMethod: { type: AuthType.SINGLE_USER - } + }, + authModeToAccessRoom: AuthMode.ALL_USERS } }; let response = await updateSecurityPreferences(validPreferences); @@ -56,113 +48,22 @@ describe('Security Preferences API Tests', () => { expect(response.status).toBe(200); expect(response.body).toEqual(validPreferences); }); - - it('should update security preferences with valid partial data (roomCreationPolicy)', async () => { - const validPreferences = { - roomCreationPolicy: { - allowRoomCreation: false - } - }; - let response = await updateSecurityPreferences(validPreferences); - - expect(response.status).toBe(200); - expect(response.body.message).toBe('Security preferences updated successfully'); - - response = await getSecurityPreferences(); - expect(response.status).toBe(200); - expect(response.body.roomCreationPolicy.allowRoomCreation).toEqual( - validPreferences.roomCreationPolicy.allowRoomCreation - ); - expect(response.body.authentication).toEqual(defaultPreferences.authentication); - }); - - it('should update security preferences with valid partial data (authentication)', async () => { - const validPreferences = { - authentication: { - authMode: AuthMode.ALL_USERS, - method: { - type: AuthType.SINGLE_USER - } - } - }; - let response = await updateSecurityPreferences(validPreferences); - - expect(response.status).toBe(200); - expect(response.body.message).toBe('Security preferences updated successfully'); - - response = await getSecurityPreferences(); - expect(response.status).toBe(200); - expect(response.body.authentication).toEqual(validPreferences.authentication); - expect(response.body.roomCreationPolicy).toEqual(defaultPreferences.roomCreationPolicy); - }); }); describe('Update security preferences validation', () => { - it('should reject when allowRoomCreation is not a boolean', async () => { - const response = await updateSecurityPreferences({ - roomCreationPolicy: { - allowRoomCreation: 'invalid', - requireAuthentication: true - } - }); - - expectValidationError( - response, - 'roomCreationPolicy.allowRoomCreation', - 'Expected boolean, received string' - ); - }); - - it('should reject when requireAuthentication is not a boolean', async () => { - const response = await updateSecurityPreferences({ - roomCreationPolicy: { - allowRoomCreation: true, - requireAuthentication: 'invalid' - } - }); - - expectValidationError( - response, - 'roomCreationPolicy.requireAuthentication', - 'Expected boolean, received string' - ); - }); - - it('should reject when allowRoomCreation is not provided', async () => { - const response = await updateSecurityPreferences({ - roomCreationPolicy: { - requireAuthentication: true - } - }); - expectValidationError(response, 'roomCreationPolicy.allowRoomCreation', 'Required'); - }); - - it('should reject when allowRoomCreation is true and requireAuthentication is not provided', async () => { - const response = await updateSecurityPreferences({ - roomCreationPolicy: { - allowRoomCreation: true - } - }); - expectValidationError( - response, - 'roomCreationPolicy.requireAuthentication', - 'requireAuthentication is required when allowRoomCreation is true' - ); - }); - - it('should reject when authMode is not a valid enum value', async () => { + it('should reject when authModeToAccessRoom is not a valid enum value', async () => { const response = await updateSecurityPreferences({ authentication: { - authMode: 'invalid', - method: { + authMethod: { type: AuthType.SINGLE_USER - } + }, + authModeToAccessRoom: 'invalid' } }); expectValidationError( response, - 'authentication.authMode', + 'authentication.authModeToAccessRoom', "Invalid enum value. Expected 'none' | 'moderators_only' | 'all_users', received 'invalid'" ); }); @@ -170,27 +71,27 @@ describe('Security Preferences API Tests', () => { it('should reject when authType is not a valid enum value', async () => { const response = await updateSecurityPreferences({ authentication: { - authMode: AuthMode.NONE, - method: { + authMethod: { type: 'invalid' - } + }, + authModeToAccessRoom: AuthMode.ALL_USERS } }); expectValidationError( response, - 'authentication.method.type', + 'authentication.authMethod.type', "Invalid enum value. Expected 'single-user', received 'invalid'" ); }); - it('should reject when authMode or method are not provided', async () => { + it('should reject when authModeToAccessRoom or authMethod are not provided', async () => { let response = await updateSecurityPreferences({ authentication: { authMode: AuthMode.NONE } }); - expectValidationError(response, 'authentication.method', 'Required'); + expectValidationError(response, 'authentication.authMethod', 'Required'); response = await updateSecurityPreferences({ authentication: { @@ -199,15 +100,7 @@ describe('Security Preferences API Tests', () => { } } }); - expectValidationError(response, 'authentication.authMode', 'Required'); - }); - - it('should reject when roomCreationPolicy is not an object', async () => { - const response = await updateSecurityPreferences({ - roomCreationPolicy: 'invalid' - }); - - expectValidationError(response, 'roomCreationPolicy', 'Expected object, received string'); + expectValidationError(response, 'authentication.authModeToAccessRoom', 'Required'); }); it('should reject when authentication is not an object', async () => { @@ -217,12 +110,6 @@ describe('Security Preferences API Tests', () => { expectValidationError(response, 'authentication', 'Expected object, received string'); }); - - it('should reject when both roomCreationPolicy and authentication are not provided', async () => { - const response = await updateSecurityPreferences({}); - - expectValidationError(response, '', 'At least one field must be provided for the update'); - }); }); describe('Get security preferences', () => { diff --git a/backend/tests/integration/api/rooms/create-room.test.ts b/backend/tests/integration/api/rooms/create-room.test.ts index 06f8e5e..ff48942 100644 --- a/backend/tests/integration/api/rooms/create-room.test.ts +++ b/backend/tests/integration/api/rooms/create-room.test.ts @@ -3,9 +3,9 @@ import { Express } from 'express'; import ms from 'ms'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; -import { MeetRecordingAccess, UserRole } from '../../../../src/typings/ce/index.js'; +import { MeetRecordingAccess } from '../../../../src/typings/ce/index.js'; import { expectValidRoom } from '../../../helpers/assertion-helpers.js'; -import { createRoom, deleteAllRooms, loginUserAsRole, startTestServer } from '../../../helpers/request-helpers.js'; +import { createRoom, deleteAllRooms, loginUser, startTestServer } from '../../../helpers/request-helpers.js'; const ROOMS_PATH = `${INTERNAL_CONFIG.API_BASE_PATH_V1}/rooms`; @@ -13,11 +13,11 @@ describe('Room API Tests', () => { const validAutoDeletionDate = Date.now() + ms('2h'); let app: Express; - let userCookie: string; + let adminCookie: string; beforeAll(async () => { app = startTestServer(); - userCookie = await loginUserAsRole(UserRole.USER); + adminCookie = await loginUser(); }); afterAll(async () => { @@ -68,7 +68,7 @@ describe('Room API Tests', () => { roomIdPrefix: 'TestRoom' }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); // Check that the error message contains the positive number validation expect(response.body.error).toContain('Unprocessable Entity'); @@ -81,7 +81,7 @@ describe('Room API Tests', () => { roomIdPrefix: 'TestRoom' }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(response.body.error).toContain('Unprocessable Entity'); expect(JSON.stringify(response.body.details)).toContain( @@ -95,7 +95,7 @@ describe('Room API Tests', () => { roomIdPrefix: 'TestRoom' }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected number'); }); @@ -106,7 +106,7 @@ describe('Room API Tests', () => { roomIdPrefix: 'TestRoom' }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected number'); }); @@ -117,7 +117,7 @@ describe('Room API Tests', () => { roomIdPrefix: 'TestRoom' }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected number'); }); @@ -128,7 +128,7 @@ describe('Room API Tests', () => { autoDeletionDate: validAutoDeletionDate }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected string'); }); @@ -139,7 +139,7 @@ describe('Room API Tests', () => { autoDeletionDate: validAutoDeletionDate }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected string'); }); @@ -151,7 +151,7 @@ describe('Room API Tests', () => { preferences: 'invalid-preferences' }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected object'); }); @@ -172,7 +172,7 @@ describe('Room API Tests', () => { } }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('Expected boolean'); }); @@ -181,7 +181,7 @@ describe('Room API Tests', () => { // In this case, instead of sending JSON object, send an invalid JSON string. const response = await request(app) .post(ROOMS_PATH) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .set('Content-Type', 'application/json') .send('{"roomIdPrefix": "TestRoom",') // invalid JSON syntax .expect(400); @@ -197,7 +197,7 @@ describe('Room API Tests', () => { autoDeletionDate: validAutoDeletionDate }; - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send(payload).expect(422); + const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send(payload).expect(422); expect(JSON.stringify(response.body.details)).toContain('roomIdPrefix cannot exceed 50 characters'); }); diff --git a/backend/tests/integration/api/security/auth.test.ts b/backend/tests/integration/api/security/auth.test.ts index 99642c3..a98d686 100644 --- a/backend/tests/integration/api/security/auth.test.ts +++ b/backend/tests/integration/api/security/auth.test.ts @@ -2,9 +2,8 @@ import { beforeAll, describe, expect, it } from '@jest/globals'; import { Express } from 'express'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; -import { UserRole } from '../../../../src/typings/ce/index.js'; import { expectValidationError } from '../../../helpers/assertion-helpers.js'; -import { loginUserAsRole, startTestServer } from '../../../helpers/request-helpers.js'; +import { loginUser, startTestServer } from '../../../helpers/request-helpers.js'; const AUTH_PATH = `${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/auth`; @@ -20,8 +19,8 @@ describe('Authentication API Tests', () => { const response = await request(app) .post(`${AUTH_PATH}/login`) .send({ - username: 'user', - password: 'user' + username: 'admin', + password: 'admin' }) .expect(200); @@ -45,7 +44,7 @@ describe('Authentication API Tests', () => { const response = await request(app) .post(`${AUTH_PATH}/login`) .send({ - username: 'user', + username: 'admin', password: 'invalidpassword' }) .expect(404); @@ -127,8 +126,8 @@ describe('Authentication API Tests', () => { const loginResponse = await request(app) .post(`${AUTH_PATH}/login`) .send({ - username: 'user', - password: 'user' + username: 'admin', + password: 'admin' }) .expect(200); @@ -172,22 +171,10 @@ describe('Authentication API Tests', () => { }); describe('Profile Tests', () => { - let userCookie: string; let adminCookie: string; beforeAll(async () => { - // Get cookies for admin and user - userCookie = await loginUserAsRole(UserRole.USER); - adminCookie = await loginUserAsRole(UserRole.ADMIN); - }); - - it('should return 200 and user profile', async () => { - const response = await request(app).get(`${AUTH_PATH}/profile`).set('Cookie', userCookie).expect(200); - - expect(response.body).toHaveProperty('username'); - expect(response.body.username).toBe('user'); - expect(response.body).toHaveProperty('role'); - expect(response.body.role).toContain('user'); + adminCookie = await loginUser(); }); it('should return 200 and admin profile', async () => { @@ -195,8 +182,8 @@ describe('Authentication API Tests', () => { expect(response.body).toHaveProperty('username'); expect(response.body.username).toBe('admin'); - expect(response.body).toHaveProperty('role'); - expect(response.body.role).toContain('admin'); + expect(response.body).toHaveProperty('roles'); + expect(response.body.roles).toEqual(expect.arrayContaining(['admin', 'user'])); }); it('should return 401 when no access token is provided', async () => { diff --git a/backend/tests/integration/api/security/meeting-security.test.ts b/backend/tests/integration/api/security/meeting-security.test.ts index 63b2bd0..fb1b81b 100644 --- a/backend/tests/integration/api/security/meeting-security.test.ts +++ b/backend/tests/integration/api/security/meeting-security.test.ts @@ -3,11 +3,10 @@ import { Express } from 'express'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; import { MEET_API_KEY } from '../../../../src/environment.js'; -import { UserRole } from '../../../../src/typings/ce/index.js'; import { deleteAllRooms, disconnectFakeParticipants, - loginUserAsRole, + loginUser, startTestServer } from '../../../helpers/request-helpers.js'; import { RoomData, setupSingleRoom } from '../../../helpers/test-scenarios.js'; @@ -16,18 +15,12 @@ const MEETINGS_PATH = `${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/meetings`; describe('Meeting API Security Tests', () => { let app: Express; - - let userCookie: string; let adminCookie: string; - let roomData: RoomData; beforeAll(async () => { app = startTestServer(); - - // Get cookies for admin and user - userCookie = await loginUserAsRole(UserRole.USER); - adminCookie = await loginUserAsRole(UserRole.ADMIN); + adminCookie = await loginUser(); }); beforeEach(async () => { @@ -54,13 +47,6 @@ describe('Meeting API Security Tests', () => { expect(response.status).toBe(401); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .delete(`${MEETINGS_PATH}/${roomData.room.roomId}`) - .set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when participant is moderator', async () => { const response = await request(app) .delete(`${MEETINGS_PATH}/${roomData.room.roomId}`) @@ -102,13 +88,6 @@ describe('Meeting API Security Tests', () => { expect(response.status).toBe(401); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .delete(`${MEETINGS_PATH}/${roomData.room.roomId}/participants/${PARTICIPANT_NAME}`) - .set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when participant is moderator', async () => { const response = await request(app) .delete(`${MEETINGS_PATH}/${roomData.room.roomId}/participants/${PARTICIPANT_NAME}`) diff --git a/backend/tests/integration/api/security/participant-security.test.ts b/backend/tests/integration/api/security/participant-security.test.ts index 63ca654..57baaa3 100644 --- a/backend/tests/integration/api/security/participant-security.test.ts +++ b/backend/tests/integration/api/security/participant-security.test.ts @@ -2,12 +2,12 @@ import { afterAll, beforeAll, describe, expect, it } from '@jest/globals'; import { Express } from 'express'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; -import { AuthMode, UserRole } from '../../../../src/typings/ce/index.js'; +import { AuthMode } from '../../../../src/typings/ce/index.js'; import { changeSecurityPreferences, deleteAllRooms, disconnectFakeParticipants, - loginUserAsRole, + loginUser, startTestServer } from '../../../helpers/request-helpers.js'; import { RoomData, setupSingleRoom } from '../../../helpers/test-scenarios.js'; @@ -18,11 +18,11 @@ describe('Participant API Security Tests', () => { const PARTICIPANT_NAME = 'TEST_PARTICIPANT'; let app: Express; - let userCookie: string; + let adminCookie: string; beforeAll(async () => { app = startTestServer(); - userCookie = await loginUserAsRole(UserRole.USER); + adminCookie = await loginUser(); }); afterAll(async () => { @@ -38,7 +38,7 @@ describe('Participant API Security Tests', () => { }); it('should succeed when no authentication is required and participant is publisher', async () => { - await changeSecurityPreferences({ authMode: AuthMode.NONE }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).send({ roomId: roomData.room.roomId, @@ -49,7 +49,7 @@ describe('Participant API Security Tests', () => { }); it('should succeed when no authentication is required and participant is moderator', async () => { - await changeSecurityPreferences({ authMode: AuthMode.NONE }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).send({ roomId: roomData.room.roomId, @@ -60,7 +60,7 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for moderator and participant is publisher', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).send({ roomId: roomData.room.roomId, @@ -71,9 +71,9 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for moderator, participant is moderator and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); - const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).set('Cookie', userCookie).send({ + const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).set('Cookie', adminCookie).send({ roomId: roomData.room.roomId, participantName: PARTICIPANT_NAME, secret: roomData.moderatorSecret @@ -82,7 +82,7 @@ describe('Participant API Security Tests', () => { }); it('should fail when authentication is required for moderator and participant is moderator but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).send({ roomId: roomData.room.roomId, @@ -93,9 +93,9 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for all users, participant is publisher and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); - const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).set('Cookie', userCookie).send({ + const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).set('Cookie', adminCookie).send({ roomId: roomData.room.roomId, participantName: PARTICIPANT_NAME, secret: roomData.publisherSecret @@ -104,7 +104,7 @@ describe('Participant API Security Tests', () => { }); it('should fail when authentication is required for all users and participant is publisher but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).send({ roomId: roomData.room.roomId, @@ -115,9 +115,9 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for all users, participant is moderator and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); - const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).set('Cookie', userCookie).send({ + const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).set('Cookie', adminCookie).send({ roomId: roomData.room.roomId, participantName: PARTICIPANT_NAME, secret: roomData.moderatorSecret @@ -126,7 +126,7 @@ describe('Participant API Security Tests', () => { }); it('should fail when authentication is required for all users and participant is moderator but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app).post(`${PARTICIPANTS_PATH}/token`).send({ roomId: roomData.room.roomId, @@ -145,7 +145,7 @@ describe('Participant API Security Tests', () => { }); it('should succeed when no authentication is required and participant is publisher', async () => { - await changeSecurityPreferences({ authMode: AuthMode.NONE }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app).post(`${PARTICIPANTS_PATH}/token/refresh`).send({ roomId: roomData.room.roomId, @@ -156,7 +156,7 @@ describe('Participant API Security Tests', () => { }); it('should succeed when no authentication is required and participant is moderator', async () => { - await changeSecurityPreferences({ authMode: AuthMode.NONE }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app).post(`${PARTICIPANTS_PATH}/token/refresh`).send({ roomId: roomData.room.roomId, @@ -167,7 +167,7 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for moderator and participant is publisher', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app).post(`${PARTICIPANTS_PATH}/token/refresh`).send({ roomId: roomData.room.roomId, @@ -178,11 +178,11 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for moderator, participant is moderator and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app) .post(`${PARTICIPANTS_PATH}/token/refresh`) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .send({ roomId: roomData.room.roomId, participantName: PARTICIPANT_NAME, @@ -192,7 +192,7 @@ describe('Participant API Security Tests', () => { }); it('should fail when authentication is required for moderator and participant is moderator but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app).post(`${PARTICIPANTS_PATH}/token/refresh`).send({ roomId: roomData.room.roomId, @@ -203,11 +203,11 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for all users, participant is publisher and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app) .post(`${PARTICIPANTS_PATH}/token/refresh`) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .send({ roomId: roomData.room.roomId, participantName: PARTICIPANT_NAME, @@ -217,7 +217,7 @@ describe('Participant API Security Tests', () => { }); it('should fail when authentication is required for all users and participant is publisher but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app).post(`${PARTICIPANTS_PATH}/token/refresh`).send({ roomId: roomData.room.roomId, @@ -228,11 +228,11 @@ describe('Participant API Security Tests', () => { }); it('should succeed when authentication is required for all users, participant is moderator and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app) .post(`${PARTICIPANTS_PATH}/token/refresh`) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .send({ roomId: roomData.room.roomId, participantName: PARTICIPANT_NAME, @@ -242,7 +242,7 @@ describe('Participant API Security Tests', () => { }); it('should fail when authentication is required for all users and participant is moderator but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app).post(`${PARTICIPANTS_PATH}/token/refresh`).send({ roomId: roomData.room.roomId, diff --git a/backend/tests/integration/api/security/preferences-security.test.ts b/backend/tests/integration/api/security/preferences-security.test.ts index d920d03..432f10d 100644 --- a/backend/tests/integration/api/security/preferences-security.test.ts +++ b/backend/tests/integration/api/security/preferences-security.test.ts @@ -3,23 +3,18 @@ import { Express } from 'express'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; import { MEET_API_KEY } from '../../../../src/environment.js'; -import { UserRole } from '../../../../src/typings/ce/index.js'; -import { loginUserAsRole, startTestServer } from '../../../helpers/request-helpers.js'; +import { loginUser, startTestServer } from '../../../helpers/request-helpers.js'; +import { AuthMode, AuthType } from '../../../../src/typings/ce/index.js'; const PREFERENCES_PATH = `${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/preferences`; describe('Global Preferences API Security Tests', () => { let app: Express; - - let userCookie: string; let adminCookie: string; beforeAll(async () => { app = startTestServer(); - - // Get cookies for admin and user - userCookie = await loginUserAsRole(UserRole.USER); - adminCookie = await loginUserAsRole(UserRole.ADMIN); + adminCookie = await loginUser(); }); describe('Update Webhook Preferences Tests', () => { @@ -44,14 +39,6 @@ describe('Global Preferences API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .put(`${PREFERENCES_PATH}/webhooks`) - .set('Cookie', userCookie) - .send(webhookPreferences); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).put(`${PREFERENCES_PATH}/webhooks`).send(webhookPreferences); expect(response.status).toBe(401); @@ -71,11 +58,6 @@ describe('Global Preferences API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).get(`${PREFERENCES_PATH}/webhooks`).set('Cookie', userCookie); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).get(`${PREFERENCES_PATH}/webhooks`); expect(response.status).toBe(401); @@ -84,9 +66,11 @@ describe('Global Preferences API Security Tests', () => { describe('Update Security Preferences Tests', () => { const securityPreferences = { - roomCreationPolicy: { - allowRoomCreation: true, - requireAuthentication: true + authentication: { + authMethod: { + type: AuthType.SINGLE_USER + }, + authModeToAccessRoom: AuthMode.ALL_USERS } }; @@ -106,14 +90,6 @@ describe('Global Preferences API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .put(`${PREFERENCES_PATH}/security`) - .set('Cookie', userCookie) - .send(securityPreferences); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).put(`${PREFERENCES_PATH}/security`).send(securityPreferences); expect(response.status).toBe(401); @@ -144,14 +120,6 @@ describe('Global Preferences API Security Tests', () => { expect(response.status).toBe(402); // Assuming 402 is the expected status code for this case }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .put(`${PREFERENCES_PATH}/appearance`) - .set('Cookie', userCookie) - .send({}); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).put(`${PREFERENCES_PATH}/appearance`).send({}); expect(response.status).toBe(401); @@ -171,11 +139,6 @@ describe('Global Preferences API Security Tests', () => { expect(response.status).toBe(402); // Assuming 402 is the expected status code for this case }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).get(`${PREFERENCES_PATH}/appearance`).set('Cookie', userCookie); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).get(`${PREFERENCES_PATH}/appearance`); expect(response.status).toBe(401); diff --git a/backend/tests/integration/api/security/recording-security.test.ts b/backend/tests/integration/api/security/recording-security.test.ts index bec2e3a..e0ead79 100644 --- a/backend/tests/integration/api/security/recording-security.test.ts +++ b/backend/tests/integration/api/security/recording-security.test.ts @@ -3,14 +3,14 @@ import { Express } from 'express'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; import { MEET_API_KEY } from '../../../../src/environment.js'; -import { MeetRecordingAccess, UserRole } from '../../../../src/typings/ce/index.js'; +import { MeetRecordingAccess } from '../../../../src/typings/ce/index.js'; import { expectValidStopRecordingResponse } from '../../../helpers/assertion-helpers.js'; import { deleteAllRecordings, deleteAllRooms, disconnectFakeParticipants, generateRecordingTokenCookie, - loginUserAsRole, + loginUser, startTestServer, stopAllRecordings, stopRecording, @@ -23,16 +23,11 @@ const INTERNAL_RECORDINGS_PATH = `${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/r describe('Recording API Security Tests', () => { let app: Express; - - let userCookie: string; let adminCookie: string; beforeAll(async () => { app = startTestServer(); - - // Get cookies for admin and user - userCookie = await loginUserAsRole(UserRole.USER); - adminCookie = await loginUserAsRole(UserRole.ADMIN); + adminCookie = await loginUser(); }); afterAll(async () => { @@ -64,14 +59,6 @@ describe('Recording API Security Tests', () => { expect(response.status).toBe(401); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .post(INTERNAL_RECORDINGS_PATH) - .send({ roomId: roomData.room.roomId }) - .set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when participant is moderator', async () => { const response = await request(app) .post(INTERNAL_RECORDINGS_PATH) @@ -129,13 +116,6 @@ describe('Recording API Security Tests', () => { expect(response.status).toBe(401); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .post(`${INTERNAL_RECORDINGS_PATH}/${roomData.recordingId}/stop`) - .set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when participant is moderator', async () => { const response = await request(app) .post(`${INTERNAL_RECORDINGS_PATH}/${roomData.recordingId}/stop`) @@ -177,11 +157,6 @@ describe('Recording API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).get(RECORDINGS_PATH).set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when recording access is public and participant is publisher', async () => { await updateRecordingAccessPreferencesInRoom(roomData.room.roomId, MeetRecordingAccess.PUBLIC); const recordingCookie = await generateRecordingTokenCookie(roomData.room.roomId, roomData.publisherSecret); @@ -265,11 +240,6 @@ describe('Recording API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).get(`${RECORDINGS_PATH}/${recordingId}`).set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when recording access is public and participant is publisher', async () => { await updateRecordingAccessPreferencesInRoom(roomData.room.roomId, MeetRecordingAccess.PUBLIC); const recordingCookie = await generateRecordingTokenCookie(roomData.room.roomId, roomData.publisherSecret); @@ -353,11 +323,6 @@ describe('Recording API Security Tests', () => { expect(response.status).toBe(204); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).delete(`${RECORDINGS_PATH}/${recordingId}`).set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should fail when recording access is public and participant is publisher', async () => { await updateRecordingAccessPreferencesInRoom(roomData.room.roomId, MeetRecordingAccess.PUBLIC); const recordingCookie = await generateRecordingTokenCookie(roomData.room.roomId, roomData.publisherSecret); @@ -455,14 +420,6 @@ describe('Recording API Security Tests', () => { .set('Cookie', adminCookie); expect(response.status).toBe(204); }); - - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .delete(RECORDINGS_PATH) - .query({ recordingIds: [recordingId] }) - .set('Cookie', userCookie); - expect(response.status).toBe(403); - }); }); describe('Get Recording Media Tests', () => { @@ -488,13 +445,6 @@ describe('Recording API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .get(`${RECORDINGS_PATH}/${recordingId}/media`) - .set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should succeed when recording access is public and participant is publisher', async () => { await updateRecordingAccessPreferencesInRoom(roomData.room.roomId, MeetRecordingAccess.PUBLIC); const recordingCookie = await generateRecordingTokenCookie(roomData.room.roomId, roomData.publisherSecret); diff --git a/backend/tests/integration/api/security/room-security.test.ts b/backend/tests/integration/api/security/room-security.test.ts index 2d4fc06..b1ac4c2 100644 --- a/backend/tests/integration/api/security/room-security.test.ts +++ b/backend/tests/integration/api/security/room-security.test.ts @@ -3,12 +3,12 @@ import { Express } from 'express'; import request from 'supertest'; import INTERNAL_CONFIG from '../../../../src/config/internal-config.js'; import { MEET_API_KEY } from '../../../../src/environment.js'; -import { AuthMode, MeetRecordingAccess, UserRole } from '../../../../src/typings/ce/index.js'; +import { AuthMode, MeetRecordingAccess } from '../../../../src/typings/ce/index.js'; import { changeSecurityPreferences, createRoom, deleteAllRooms, - loginUserAsRole, + loginUser, startTestServer, updateRecordingAccessPreferencesInRoom } from '../../../helpers/request-helpers.js'; @@ -19,15 +19,11 @@ const INTERNAL_ROOMS_PATH = `${INTERNAL_CONFIG.INTERNAL_API_BASE_PATH_V1}/rooms` describe('Room API Security Tests', () => { let app: Express; - let userCookie: string; let adminCookie: string; beforeAll(async () => { app = startTestServer(); - - // Get cookies for admin and user - userCookie = await loginUserAsRole(UserRole.USER); - adminCookie = await loginUserAsRole(UserRole.ADMIN); + adminCookie = await loginUser(); }); afterAll(async () => { @@ -35,11 +31,7 @@ describe('Room API Security Tests', () => { }); describe('Create Room Tests', () => { - it('should succeed when users cannot create rooms, and request includes API key', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: false - }); - + it('should succeed when request includes API key', async () => { const response = await request(app) .post(ROOMS_PATH) .set(INTERNAL_CONFIG.API_KEY_HEADER, MEET_API_KEY) @@ -47,59 +39,12 @@ describe('Room API Security Tests', () => { expect(response.status).toBe(201); }); - it('should succeed when users cannot create rooms, and user is authenticated as admin', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: false - }); - + it('should succeed when user is authenticated as admin', async () => { const response = await request(app).post(ROOMS_PATH).set('Cookie', adminCookie).send({}); expect(response.status).toBe(201); }); - it('should fail when users cannot create rooms, and user is authenticated as user', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: false - }); - - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send({}); - expect(response.status).toBe(403); - }); - - it('should fail when users cannot create rooms, and user is not authenticated', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: false - }); - - const response = await request(app).post(ROOMS_PATH).send({}); - expect(response.status).toBe(401); - }); - - it('should succeed when users can create rooms and auth is not required, and user is not authenticated', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: true, - authRequired: false - }); - - const response = await request(app).post(ROOMS_PATH).send({}); - expect(response.status).toBe(201); - }); - - it('should succeed when users can create rooms and auth is required, and user is authenticated', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: true, - authRequired: true - }); - - const response = await request(app).post(ROOMS_PATH).set('Cookie', userCookie).send({}); - expect(response.status).toBe(201); - }); - - it('should fail when users can create rooms and auth is required, and user is not authenticated', async () => { - await changeSecurityPreferences({ - usersCanCreateRooms: true, - authRequired: true - }); - + it('should fail when user is not authenticated', async () => { const response = await request(app).post(ROOMS_PATH).send({}); expect(response.status).toBe(401); }); @@ -116,11 +61,6 @@ describe('Room API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).get(ROOMS_PATH).set('Cookie', userCookie); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).get(ROOMS_PATH); expect(response.status).toBe(401); @@ -151,11 +91,6 @@ describe('Room API Security Tests', () => { expect(response.status).toBe(204); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).delete(ROOMS_PATH).query({ roomIds: roomId }).set('Cookie', userCookie); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).delete(ROOMS_PATH).query({ roomIds: roomId }); expect(response.status).toBe(401); @@ -181,11 +116,6 @@ describe('Room API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).get(`${ROOMS_PATH}/${roomData.room.roomId}`).set('Cookie', userCookie); - expect(response.status).toBe(401); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).get(`${ROOMS_PATH}/${roomData.room.roomId}`); expect(response.status).toBe(401); @@ -235,11 +165,6 @@ describe('Room API Security Tests', () => { expect(response.status).toBe(204); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app).delete(`${ROOMS_PATH}/${roomId}`).set('Cookie', userCookie); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).delete(`${ROOMS_PATH}/${roomId}`); expect(response.status).toBe(401); @@ -279,14 +204,6 @@ describe('Room API Security Tests', () => { expect(response.status).toBe(200); }); - it('should fail when user is authenticated as user', async () => { - const response = await request(app) - .put(`${INTERNAL_ROOMS_PATH}/${roomId}`) - .set('Cookie', userCookie) - .send(roomPreferences); - expect(response.status).toBe(403); - }); - it('should fail when user is not authenticated', async () => { const response = await request(app).put(`${INTERNAL_ROOMS_PATH}/${roomId}`).send(roomPreferences); expect(response.status).toBe(401); @@ -308,7 +225,7 @@ describe('Room API Security Tests', () => { }); it('should succeed when no authentication is required and participant is publisher', async () => { - await changeSecurityPreferences({ authMode: AuthMode.NONE }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) @@ -317,7 +234,7 @@ describe('Room API Security Tests', () => { }); it('should succeed when no authentication is required and participant is moderator', async () => { - await changeSecurityPreferences({ authMode: AuthMode.NONE }); + await changeSecurityPreferences(AuthMode.NONE); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) @@ -326,7 +243,7 @@ describe('Room API Security Tests', () => { }); it('should succeed when authentication is required for moderator and participant is publisher', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) @@ -335,17 +252,17 @@ describe('Room API Security Tests', () => { }); it('should succeed when authentication is required for moderator, participant is moderator and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .send({ secret: roomData.moderatorSecret }); expect(response.status).toBe(200); }); it('should fail when authentication is required for moderator and participant is moderator but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.MODERATORS_ONLY }); + await changeSecurityPreferences(AuthMode.MODERATORS_ONLY); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) @@ -354,17 +271,17 @@ describe('Room API Security Tests', () => { }); it('should succeed when authentication is required for all users, participant is publisher and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .send({ secret: roomData.publisherSecret }); expect(response.status).toBe(200); }); it('should fail when authentication is required for all users and participant is publisher but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) @@ -373,17 +290,17 @@ describe('Room API Security Tests', () => { }); it('should succeed when authentication is required for all users, participant is moderator and authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`) - .set('Cookie', userCookie) + .set('Cookie', adminCookie) .send({ secret: roomData.moderatorSecret }); expect(response.status).toBe(200); }); it('should fail when authentication is required for all users and participant is moderator but not authenticated', async () => { - await changeSecurityPreferences({ authMode: AuthMode.ALL_USERS }); + await changeSecurityPreferences(AuthMode.ALL_USERS); const response = await request(app) .post(`${INTERNAL_ROOMS_PATH}/${roomData.room.roomId}/recording-token`)