mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-12 16:10:30 +02:00
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (22.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.14.1) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (25.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Lint (push) Waiting to run
CI: Master (Build, Test, Lint) / Performance (push) Waiting to run
CI: Master (Build, Test, Lint) / Notify Slack on failure (push) Blocked by required conditions
Util: Sync API Docs / sync-public-api (push) Waiting to run
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com> Co-authored-by: Albert Alises <albert.alises@gmail.com> Co-authored-by: Jaakko Husso <jaakko@n8n.io> Co-authored-by: Dimitri Lavrenük <20122620+dlavrenuek@users.noreply.github.com> Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> Co-authored-by: Tuukka Kantola <Tuukkaa@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> Co-authored-by: Raúl Gómez Morales <raul00gm@gmail.com> Co-authored-by: Elias Meire <elias@meire.dev> Co-authored-by: Dimitri Lavrenük <dimitri.lavrenuek@n8n.io> Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com> Co-authored-by: Mutasem Aldmour <mutasem@n8n.io>
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import type { TemplateName } from './config-templates';
|
|
import { CONFIG_TEMPLATES, getTemplate } from './config-templates';
|
|
|
|
describe('CONFIG_TEMPLATES', () => {
|
|
it('contains exactly recommended, yolo, and custom templates', () => {
|
|
expect(CONFIG_TEMPLATES.map((t) => t.name)).toEqual(['default', 'yolo', 'custom']);
|
|
});
|
|
|
|
it('covers all tool groups on every template', () => {
|
|
const expectedGroups = ['filesystemRead', 'filesystemWrite', 'shell', 'computer', 'browser'];
|
|
for (const tpl of CONFIG_TEMPLATES) {
|
|
expect(Object.keys(tpl.permissions).sort()).toEqual(expectedGroups.sort());
|
|
}
|
|
});
|
|
|
|
describe('recommended template', () => {
|
|
it('matches the spec table', () => {
|
|
expect(getTemplate('default').permissions).toEqual({
|
|
filesystemRead: 'allow',
|
|
filesystemWrite: 'ask',
|
|
shell: 'deny',
|
|
computer: 'deny',
|
|
browser: 'ask',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('yolo template', () => {
|
|
it('sets all groups to allow', () => {
|
|
const { permissions } = getTemplate('yolo');
|
|
for (const mode of Object.values(permissions)) {
|
|
expect(mode).toBe('allow');
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('custom template', () => {
|
|
it('is defined', () => {
|
|
expect(getTemplate('custom')).toBeDefined();
|
|
});
|
|
|
|
it('has valid permission modes on all groups', () => {
|
|
const valid = new Set(['deny', 'ask', 'allow']);
|
|
for (const mode of Object.values(getTemplate('custom').permissions)) {
|
|
expect(valid.has(mode)).toBe(true);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('getTemplate', () => {
|
|
it('throws for unknown template name', () => {
|
|
expect(() => getTemplate('unknown' as TemplateName)).toThrow('Unknown template: unknown');
|
|
});
|
|
});
|