mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
* ⬆️ Upgrade TS to 4.3.5 * 👕 Add ESLint configs * 🎨 Add Prettier config * 📦 Add deps and commands * ⚡ Adjust global .editorconfig to new ruleset * 🔥 Remove unneeded local .editorconfig * 📦 Update deps in editor-ui * 🔨 Limit Prettier to only TS files * ⚡ Add recommended VSCode extensions * 👕 Fix build * 🔥 Remove Vue setting from global config * ⚡ Disable prefer-default-export per feedback * ✏️ Add forgotten divider * 👕 Disable no-plusplus * 👕 Disable class-methods-use-this * ✏️ Alphabetize overrides * 👕 Add one-var consecutive override * ⏪ Revert one-var consecutive override This reverts commit b9252cf935659ba6d76727ad484a1d3c00008fcc. * 🎨 👕 Lint and format workflow package (#2121) * 🎨 Format /workflow package * 👕 Lint /workflow package * 🎨 Re-format /workflow package * 👕 Re-lint /workflow package * ✏️ Fix typo * ⚡ Consolidate if-checks * 🔥 Remove prefer-default-export exceptions * 🔥 Remove no-plusplus exceptions * 🔥 Remove class-methods-use-this exceptions * 🎨 👕 Lint and format node-dev package (#2122) * 🎨 Format /node-dev package * ⚡ Exclude templates from ESLint config This keeps the templates consistent with the codebase while preventing lint exceptions from being made part of the templates. * 👕 Lint /node-dev package * 🔥 Remove prefer-default-export exceptions * 🔥 Remove no-plusplus exceptions * 🎨 👕 Lint and format core package (#2123) * 🎨 Format /core package * 👕 Lint /core package * 🎨 Re-format /core package * 👕 Re-lint /core package * 🔥 Remove prefer-default-export exceptions * 🔥 Remove no-plusplus exceptions * 🔥 Remove class-methods-use-this exceptions * 🎨 👕 Lint and format cli package (#2124) * 🎨 Format /cli package * 👕 Exclude migrations from linting * 👕 Lint /cli package * 🎨 Re-format /cli package * 👕 Re-lint /cli package * 👕 Fix build * 🔥 Remove prefer-default-export exceptions * ⚡ Update exceptions in ActiveExecutions * 🔥 Remove no-plusplus exceptions * 🔥 Remove class-methods-use-this exceptions * 👕 fix lint issues * 🔧 use package specific linter, remove tslint command * 🔨 resolve build issue, sync dependencies * 🔧 change lint command Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
84 lines
2.6 KiB
TypeScript
84 lines
2.6 KiB
TypeScript
import { Credentials } from '../src';
|
|
|
|
describe('Credentials', () => {
|
|
describe('without nodeType set', () => {
|
|
test('should be able to set and read key data without initial data set', () => {
|
|
const credentials = new Credentials('testName', 'testType', []);
|
|
|
|
const key = 'key1';
|
|
const password = 'password';
|
|
// const nodeType = 'base.noOp';
|
|
const newData = 1234;
|
|
|
|
credentials.setDataKey(key, newData, password);
|
|
|
|
expect(credentials.getDataKey(key, password)).toEqual(newData);
|
|
});
|
|
|
|
test('should be able to set and read key data with initial data set', () => {
|
|
const key = 'key2';
|
|
const password = 'password';
|
|
|
|
// Saved under "key1"
|
|
const initialData = 4321;
|
|
const initialDataEncoded = 'U2FsdGVkX1+0baznXt+Ag/ub8A2kHLyoLxn/rR9h4XQ=';
|
|
|
|
const credentials = new Credentials('testName', 'testType', [], initialDataEncoded);
|
|
|
|
const newData = 1234;
|
|
|
|
// Set and read new data
|
|
credentials.setDataKey(key, newData, password);
|
|
expect(credentials.getDataKey(key, password)).toEqual(newData);
|
|
|
|
// Read the data which got provided encrypted on init
|
|
expect(credentials.getDataKey('key1', password)).toEqual(initialData);
|
|
});
|
|
});
|
|
|
|
describe('with nodeType set', () => {
|
|
test('should be able to set and read key data without initial data set', () => {
|
|
const nodeAccess = [
|
|
{
|
|
nodeType: 'base.noOp',
|
|
user: 'userName',
|
|
date: new Date(),
|
|
},
|
|
];
|
|
|
|
const credentials = new Credentials('testName', 'testType', nodeAccess);
|
|
|
|
const key = 'key1';
|
|
const password = 'password';
|
|
const nodeType = 'base.noOp';
|
|
const newData = 1234;
|
|
|
|
credentials.setDataKey(key, newData, password);
|
|
|
|
// Should be able to read with nodeType which has access
|
|
expect(credentials.getDataKey(key, password, nodeType)).toEqual(newData);
|
|
|
|
// Should not be able to read with nodeType which does NOT have access
|
|
// expect(credentials.getDataKey(key, password, 'base.otherNode')).toThrowError(Error);
|
|
try {
|
|
credentials.getDataKey(key, password, 'base.otherNode');
|
|
expect(true).toBe(false);
|
|
} catch (e) {
|
|
expect(e.message).toBe(
|
|
'The node of type "base.otherNode" does not have access to credentials "testName" of type "testType".',
|
|
);
|
|
}
|
|
|
|
// Get the data which will be saved in database
|
|
const dbData = credentials.getDataToSave();
|
|
expect(dbData.name).toEqual('testName');
|
|
expect(dbData.type).toEqual('testType');
|
|
expect(dbData.nodesAccess).toEqual(nodeAccess);
|
|
// Compare only the first 6 characters as the rest seems to change with each execution
|
|
expect(dbData.data!.slice(0, 6)).toEqual(
|
|
'U2FsdGVkX1+wpQWkj+YTzaPSNTFATjnlmFKIsUTZdhk='.slice(0, 6),
|
|
);
|
|
});
|
|
});
|
|
});
|