n8n/packages/@n8n/fs-proxy/src/config-templates.test.ts
oleg 629826ca1d
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
feat: Instance AI and local gateway modules (no-changelog) (#27206)
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>
2026-04-01 21:33:38 +03:00

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');
});
});