56 lines
2.1 KiB
TypeScript
56 lines
2.1 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {hasPermission} from '.';
|
|
|
|
import type RoleModel from '@typings/database/models/servers/role';
|
|
|
|
// Mock RoleModel type (simplified version)
|
|
const mockRoleModel = (permissions: string[]): RoleModel => ({
|
|
id: 'role-id',
|
|
name: 'role-name',
|
|
permissions,
|
|
} as RoleModel);
|
|
|
|
describe('hasPermission', () => {
|
|
it('should return false when roles array is empty', () => {
|
|
const roles: RoleModel[] = [];
|
|
|
|
const result = hasPermission(roles, 'some_permission');
|
|
expect(result).toBe(false); // No roles, no permissions, expect false
|
|
});
|
|
|
|
it('should return false when a single role does not have the permission', () => {
|
|
const roles: RoleModel[] = [mockRoleModel(['permission_1', 'permission_2'])];
|
|
|
|
const result = hasPermission(roles, 'missing_permission');
|
|
expect(result).toBe(false); // Role does not have 'missing_permission'
|
|
});
|
|
|
|
it('should return true when a single role has the permission', () => {
|
|
const roles: RoleModel[] = [mockRoleModel(['permission_1', 'permission_2', 'desired_permission'])];
|
|
|
|
const result = hasPermission(roles, 'desired_permission');
|
|
expect(result).toBe(true); // Role has 'desired_permission'
|
|
});
|
|
|
|
it('should return false when multiple roles do not have the permission', () => {
|
|
const roles: RoleModel[] = [
|
|
mockRoleModel(['permission_1', 'permission_2']),
|
|
mockRoleModel(['permission_3', 'permission_4']),
|
|
];
|
|
|
|
const result = hasPermission(roles, 'missing_permission');
|
|
expect(result).toBe(false); // None of the roles have 'missing_permission'
|
|
});
|
|
|
|
it('should return true when one of multiple roles has the permission', () => {
|
|
const roles: RoleModel[] = [
|
|
mockRoleModel(['permission_1', 'permission_2']),
|
|
mockRoleModel(['desired_permission', 'permission_4']),
|
|
];
|
|
|
|
const result = hasPermission(roles, 'desired_permission');
|
|
expect(result).toBe(true); // Second role has 'desired_permission'
|
|
});
|
|
});
|