96 lines
3.2 KiB
JavaScript
96 lines
3.2 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import Permission from './permission';
|
|
import permissionCatalog from '../helpers/permission-catalog.ee.js';
|
|
|
|
describe('Permission model', () => {
|
|
it('tableName should return correct name', () => {
|
|
expect(Permission.tableName).toBe('permissions');
|
|
});
|
|
|
|
it('jsonSchema should have correct validations', () => {
|
|
expect(Permission.jsonSchema).toMatchSnapshot();
|
|
});
|
|
|
|
it('filter should return only valid permissions based on permission catalog', () => {
|
|
const permissions = [
|
|
{ action: 'read', subject: 'Flow', conditions: ['isCreator'] },
|
|
{ action: 'delete', subject: 'Connection', conditions: [] },
|
|
{ action: 'publish', subject: 'Flow', conditions: ['isCreator'] },
|
|
{ action: 'update', subject: 'Execution', conditions: [] }, // Invalid subject
|
|
{ action: 'read', subject: 'Execution', conditions: ['invalid'] }, // Invalid condition
|
|
{ action: 'invalid', subject: 'Execution', conditions: [] }, // Invalid action
|
|
];
|
|
|
|
const result = Permission.filter(permissions);
|
|
|
|
expect(result).toStrictEqual([
|
|
{ action: 'read', subject: 'Flow', conditions: ['isCreator'] },
|
|
{ action: 'delete', subject: 'Connection', conditions: [] },
|
|
{ action: 'publish', subject: 'Flow', conditions: ['isCreator'] },
|
|
]);
|
|
});
|
|
|
|
describe('findAction', () => {
|
|
it('should return action from permission catalog', () => {
|
|
const action = Permission.findAction('create');
|
|
expect(action.key).toStrictEqual('create');
|
|
});
|
|
|
|
it('should return undefined for invalid actions', () => {
|
|
const invalidAction = Permission.findAction('invalidAction');
|
|
expect(invalidAction).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe('isSubjectValid', () => {
|
|
it('should return true for valid subjects', () => {
|
|
const validAction = permissionCatalog.actions.find(
|
|
(action) => action.key === 'create'
|
|
);
|
|
|
|
const validSubject = Permission.isSubjectValid('Connection', validAction);
|
|
expect(validSubject).toBe(true);
|
|
});
|
|
|
|
it('should return false for invalid subjects', () => {
|
|
const validAction = permissionCatalog.actions.find(
|
|
(action) => action.key === 'create'
|
|
);
|
|
|
|
const invalidSubject = Permission.isSubjectValid(
|
|
'Execution',
|
|
validAction
|
|
);
|
|
|
|
expect(invalidSubject).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('areConditionsValid', () => {
|
|
it('should return true for valid conditions', () => {
|
|
const validConditions = Permission.areConditionsValid(['isCreator']);
|
|
expect(validConditions).toBe(true);
|
|
});
|
|
|
|
it('should return false for invalid conditions', () => {
|
|
const invalidConditions = Permission.areConditionsValid([
|
|
'invalidCondition',
|
|
]);
|
|
|
|
expect(invalidConditions).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('isConditionValid', () => {
|
|
it('should return true for valid conditions', () => {
|
|
const validCondition = Permission.isConditionValid('isCreator');
|
|
expect(validCondition).toBe(true);
|
|
});
|
|
|
|
it('should return false for invalid conditions', () => {
|
|
const invalidCondition = Permission.isConditionValid('invalidCondition');
|
|
expect(invalidCondition).toBe(false);
|
|
});
|
|
});
|
|
});
|