n8n/packages/core/test/Credentials.test.ts

89 lines
2.8 KiB
TypeScript
Raw Permalink Normal View History

2019-06-23 03:35:23 -07:00
import { Credentials } from '../src';
describe('Credentials', () => {
2020-10-22 06:46:03 -07:00
describe('without nodeType set', () => {
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
test('should be able to set and read key data without initial data set', () => {
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const credentials = new Credentials('testName', 'testType', []);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const key = 'key1';
const password = 'password';
// const nodeType = 'base.noOp';
const newData = 1234;
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
credentials.setDataKey(key, newData, password);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
expect(credentials.getDataKey(key, password)).toEqual(newData);
});
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
test('should be able to set and read key data with initial data set', () => {
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const key = 'key2';
const password = 'password';
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
// Saved under "key1"
const initialData = 4321;
const initialDataEncoded = 'U2FsdGVkX1+0baznXt+Ag/ub8A2kHLyoLxn/rR9h4XQ=';
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const credentials = new Credentials('testName', 'testType', [], initialDataEncoded);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const newData = 1234;
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
// Set and read new data
credentials.setDataKey(key, newData, password);
expect(credentials.getDataKey(key, password)).toEqual(newData);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
// Read the data which got provided encrypted on init
expect(credentials.getDataKey('key1', password)).toEqual(initialData);
});
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
});
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
describe('with nodeType set', () => {
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
test('should be able to set and read key data without initial data set', () => {
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const nodeAccess = [
{
nodeType: 'base.noOp',
user: 'userName',
date: new Date(),
},
];
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const credentials = new Credentials('testName', 'testType', nodeAccess);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
const key = 'key1';
const password = 'password';
const nodeType = 'base.noOp';
const newData = 1234;
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
credentials.setDataKey(key, newData, password);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
// Should be able to read with nodeType which has access
expect(credentials.getDataKey(key, password, nodeType)).toEqual(newData);
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
// 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".');
}
2019-06-23 03:35:23 -07:00
2020-10-22 06:46:03 -07:00
// 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));
});
});
2019-06-23 03:35:23 -07:00
});