n8n/packages/cli/src/__tests__/load-nodes-and-credentials.test.ts
Tomi Turtiainen d4afb0f38b
Some checks are pending
Test Master / install-and-build (push) Waiting to run
Test Master / Unit tests (18.x) (push) Blocked by required conditions
Test Master / Unit tests (20.x) (push) Blocked by required conditions
Test Master / Unit tests (22.4) (push) Blocked by required conditions
Test Master / Lint (push) Blocked by required conditions
Test Master / Notify Slack on failure (push) Blocked by required conditions
refactor: Simplify resolveIcon checks and add tests (#11165)
2024-10-08 17:04:45 +03:00

38 lines
1.3 KiB
TypeScript

import { mock } from 'jest-mock-extended';
import type { DirectoryLoader } from 'n8n-core';
import { LoadNodesAndCredentials } from '../load-nodes-and-credentials';
describe('LoadNodesAndCredentials', () => {
describe('resolveIcon', () => {
let instance: LoadNodesAndCredentials;
beforeEach(() => {
instance = new LoadNodesAndCredentials(mock(), mock(), mock());
instance.loaders.package1 = mock<DirectoryLoader>({
directory: '/icons/package1',
});
});
it('should return undefined if the loader for the package is not found', () => {
const result = instance.resolveIcon('unknownPackage', '/icons/unknownPackage/icon.png');
expect(result).toBeUndefined();
});
it('should return undefined if the resolved file path is outside the loader directory', () => {
const result = instance.resolveIcon('package1', '/some/other/path/icon.png');
expect(result).toBeUndefined();
});
it('should return the file path if the file is within the loader directory', () => {
const result = instance.resolveIcon('package1', '/icons/package1/icon.png');
expect(result).toBe('/icons/package1/icon.png');
});
it('should return undefined if the URL is outside the package directory', () => {
const result = instance.resolveIcon('package1', '/icons/package1/../../../etc/passwd');
expect(result).toBeUndefined();
});
});
});