mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-12 23:54:07 -08:00
0468ded0db
Github issue / Community forum post (link here to close automatically):
117 lines
2 KiB
TypeScript
117 lines
2 KiB
TypeScript
import { hasScope } from '@/hasScope';
|
|
import type { Scope } from '@/types';
|
|
|
|
const ownerPermissions: Scope[] = [
|
|
'workflow:create',
|
|
'workflow:read',
|
|
'workflow:update',
|
|
'workflow:delete',
|
|
'workflow:list',
|
|
'user:create',
|
|
'user:read',
|
|
'user:update',
|
|
'user:delete',
|
|
'user:list',
|
|
'credential:create',
|
|
'credential:read',
|
|
'credential:update',
|
|
'credential:delete',
|
|
'credential:list',
|
|
'variable:create',
|
|
'variable:read',
|
|
'variable:update',
|
|
'variable:delete',
|
|
'variable:list',
|
|
];
|
|
const memberPermissions: Scope[] = ['user:list', 'variable:list', 'variable:read'];
|
|
|
|
describe('hasScope', () => {
|
|
test('should work with a single permission on both modes with only global scopes', () => {
|
|
expect(
|
|
hasScope(
|
|
'user:list',
|
|
{
|
|
global: memberPermissions,
|
|
},
|
|
{ mode: 'oneOf' },
|
|
),
|
|
).toBe(true);
|
|
|
|
expect(
|
|
hasScope(
|
|
'user:list',
|
|
{
|
|
global: memberPermissions,
|
|
},
|
|
{ mode: 'allOf' },
|
|
),
|
|
).toBe(true);
|
|
|
|
expect(
|
|
hasScope(
|
|
'workflow:read',
|
|
{
|
|
global: memberPermissions,
|
|
},
|
|
{ mode: 'oneOf' },
|
|
),
|
|
).toBe(false);
|
|
|
|
expect(
|
|
hasScope(
|
|
'workflow:read',
|
|
{
|
|
global: memberPermissions,
|
|
},
|
|
{ mode: 'allOf' },
|
|
),
|
|
).toBe(false);
|
|
});
|
|
|
|
test('should work with oneOf mode', () => {
|
|
expect(
|
|
hasScope(['workflow:create', 'workflow:read'], {
|
|
global: ownerPermissions,
|
|
}),
|
|
).toBe(true);
|
|
|
|
expect(
|
|
hasScope(['workflow:create', 'workflow:read'], {
|
|
global: memberPermissions,
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
|
|
test('should work with allOf mode', () => {
|
|
expect(
|
|
hasScope(
|
|
['workflow:create', 'workflow:read'],
|
|
{
|
|
global: ownerPermissions,
|
|
},
|
|
{ mode: 'allOf' },
|
|
),
|
|
).toBe(true);
|
|
|
|
expect(
|
|
hasScope(
|
|
['workflow:create', 'workflow:read'],
|
|
{
|
|
global: memberPermissions,
|
|
},
|
|
{ mode: 'allOf' },
|
|
),
|
|
).toBe(false);
|
|
|
|
expect(
|
|
hasScope(
|
|
['workflow:create', 'user:list'],
|
|
{
|
|
global: memberPermissions,
|
|
},
|
|
{ mode: 'allOf' },
|
|
),
|
|
).toBe(false);
|
|
});
|
|
});
|