127 lines
3.6 KiB
TypeScript
127 lines
3.6 KiB
TypeScript
import { beforeAll, beforeEach, describe, expect, it } from '@jest/globals';
|
|
import { expectValidationError } from '../../../helpers/assertion-helpers.js';
|
|
import {
|
|
getSecurityPreferences,
|
|
startTestServer,
|
|
updateSecurityPreferences
|
|
} from '../../../helpers/request-helpers.js';
|
|
import { AuthMode, AuthType } from '../../../../src/typings/ce/index.js';
|
|
import { container } from '../../../../src/config/dependency-injector.config.js';
|
|
import { MeetStorageService } from '../../../../src/services/index.js';
|
|
|
|
const defaultPreferences = {
|
|
authentication: {
|
|
authMethod: {
|
|
type: AuthType.SINGLE_USER
|
|
},
|
|
authModeToAccessRoom: AuthMode.NONE
|
|
}
|
|
};
|
|
|
|
const restoreDefaultGlobalPreferences = async () => {
|
|
const defaultPref = await container.get(MeetStorageService)['getDefaultPreferences']();
|
|
await container.get(MeetStorageService).saveGlobalPreferences(defaultPref);
|
|
};
|
|
|
|
describe('Security Preferences API Tests', () => {
|
|
beforeAll(async () => {
|
|
startTestServer();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
await restoreDefaultGlobalPreferences();
|
|
});
|
|
|
|
describe('Update security preferences', () => {
|
|
it('should update security preferences with valid complete data', async () => {
|
|
const validPreferences = {
|
|
authentication: {
|
|
authMethod: {
|
|
type: AuthType.SINGLE_USER
|
|
},
|
|
authModeToAccessRoom: AuthMode.ALL_USERS
|
|
}
|
|
};
|
|
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).toEqual(validPreferences);
|
|
});
|
|
});
|
|
|
|
describe('Update security preferences validation', () => {
|
|
it('should reject when authModeToAccessRoom is not a valid enum value', async () => {
|
|
const response = await updateSecurityPreferences({
|
|
authentication: {
|
|
authMethod: {
|
|
type: AuthType.SINGLE_USER
|
|
},
|
|
authModeToAccessRoom: 'invalid'
|
|
}
|
|
});
|
|
|
|
expectValidationError(
|
|
response,
|
|
'authentication.authModeToAccessRoom',
|
|
"Invalid enum value. Expected 'none' | 'moderators_only' | 'all_users', received 'invalid'"
|
|
);
|
|
});
|
|
|
|
it('should reject when authType is not a valid enum value', async () => {
|
|
const response = await updateSecurityPreferences({
|
|
authentication: {
|
|
authMethod: {
|
|
type: 'invalid'
|
|
},
|
|
authModeToAccessRoom: AuthMode.ALL_USERS
|
|
}
|
|
});
|
|
|
|
expectValidationError(
|
|
response,
|
|
'authentication.authMethod.type',
|
|
"Invalid enum value. Expected 'single-user', received 'invalid'"
|
|
);
|
|
});
|
|
|
|
it('should reject when authModeToAccessRoom or authMethod are not provided', async () => {
|
|
let response = await updateSecurityPreferences({
|
|
authentication: {
|
|
authMode: AuthMode.NONE
|
|
}
|
|
});
|
|
expectValidationError(response, 'authentication.authMethod', 'Required');
|
|
|
|
response = await updateSecurityPreferences({
|
|
authentication: {
|
|
method: {
|
|
type: AuthType.SINGLE_USER
|
|
}
|
|
}
|
|
});
|
|
expectValidationError(response, 'authentication.authModeToAccessRoom', 'Required');
|
|
});
|
|
|
|
it('should reject when authentication is not an object', async () => {
|
|
const response = await updateSecurityPreferences({
|
|
authentication: 'invalid'
|
|
});
|
|
|
|
expectValidationError(response, 'authentication', 'Expected object, received string');
|
|
});
|
|
});
|
|
|
|
describe('Get security preferences', () => {
|
|
it('should return security preferences when authenticated as admin', async () => {
|
|
const response = await getSecurityPreferences();
|
|
|
|
expect(response.status).toBe(200);
|
|
expect(response.body).toEqual(defaultPreferences);
|
|
});
|
|
});
|
|
});
|