n8n 0.192.2 → 0.193.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/src/Server.js +3 -517
  2. package/dist/src/Server.js.map +1 -1
  3. package/dist/src/UserManagement/routes/users.js +4 -4
  4. package/dist/src/UserManagement/routes/users.js.map +1 -1
  5. package/dist/src/api/executions.api.d.ts +1 -0
  6. package/dist/src/api/executions.api.js +325 -0
  7. package/dist/src/api/executions.api.js.map +1 -0
  8. package/dist/src/api/nodes.api.js +3 -3
  9. package/dist/src/api/nodes.api.js.map +1 -1
  10. package/dist/src/api/oauth2Credential.api.js +3 -2
  11. package/dist/src/api/oauth2Credential.api.js.map +1 -1
  12. package/dist/src/api/workflows.api.js +262 -0
  13. package/dist/src/api/workflows.api.js.map +1 -1
  14. package/dist/src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.js +1 -1
  15. package/dist/src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.js.map +1 -1
  16. package/dist/src/databases/ormconfig.d.ts +3 -3
  17. package/dist/test/integration/credentials.api.test.js +27 -33
  18. package/dist/test/integration/credentials.api.test.js.map +1 -1
  19. package/dist/test/integration/nodes.api.test.js +2 -2
  20. package/dist/test/integration/nodes.api.test.js.map +1 -1
  21. package/dist/test/integration/shared/random.d.ts +10 -0
  22. package/dist/test/integration/shared/random.js +10 -1
  23. package/dist/test/integration/shared/random.js.map +1 -1
  24. package/dist/test/integration/shared/testDb.d.ts +1 -1
  25. package/dist/test/integration/shared/testDb.js +1 -1
  26. package/dist/test/integration/shared/testDb.js.map +1 -1
  27. package/dist/test/integration/users.api.test.js +9 -36
  28. package/dist/test/integration/users.api.test.js.map +1 -1
  29. package/dist/test/unit/ActiveExecutions.test.d.ts +1 -0
  30. package/dist/test/unit/ActiveExecutions.test.js +81 -0
  31. package/dist/test/unit/ActiveExecutions.test.js.map +1 -0
  32. package/oclif.manifest.json +1 -1
  33. package/package.json +12 -12
@@ -40,6 +40,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.workflowsController = void 0;
41
41
  const express_1 = __importDefault(require("express"));
42
42
  const n8n_workflow_1 = require("n8n-workflow");
43
+ const axios_1 = __importDefault(require("axios"));
44
+ const typeorm_1 = require("typeorm");
43
45
  const __1 = require("..");
44
46
  const config_1 = __importDefault(require("../../config"));
45
47
  const TagHelpers = __importStar(require("../TagHelpers"));
@@ -48,7 +50,15 @@ const WorkflowEntity_1 = require("../databases/entities/WorkflowEntity");
48
50
  const GenericHelpers_1 = require("../GenericHelpers");
49
51
  const InternalHooksManager_1 = require("../InternalHooksManager");
50
52
  const Server_1 = require("../Server");
53
+ const WorkflowHelpers_1 = require("../WorkflowHelpers");
54
+ const activeWorkflowRunner = __1.ActiveWorkflowRunner.getInstance();
51
55
  exports.workflowsController = express_1.default.Router();
56
+ const isTrigger = (nodeType) => ['trigger', 'webhook'].some((suffix) => nodeType.toLowerCase().includes(suffix));
57
+ function findFirstPinnedTrigger(workflow, pinData) {
58
+ if (!pinData)
59
+ return;
60
+ return workflow.nodes.find((node) => !node.disabled && isTrigger(node.type) && pinData[node.name]);
61
+ }
52
62
  exports.workflowsController.post('/', __1.ResponseHelper.send(async (req) => {
53
63
  delete req.body.id;
54
64
  const newWorkflow = new WorkflowEntity_1.WorkflowEntity();
@@ -92,6 +102,88 @@ exports.workflowsController.post('/', __1.ResponseHelper.send(async (req) => {
92
102
  const { id } = savedWorkflow, rest = __rest(savedWorkflow, ["id"]);
93
103
  return Object.assign({ id: id.toString() }, rest);
94
104
  }));
105
+ exports.workflowsController.get(`/`, __1.ResponseHelper.send(async (req) => {
106
+ let workflows = [];
107
+ let filter = {};
108
+ if (req.query.filter) {
109
+ try {
110
+ filter = JSON.parse(req.query.filter) || {};
111
+ }
112
+ catch (error) {
113
+ n8n_workflow_1.LoggerProxy.error('Failed to parse filter', {
114
+ userId: req.user.id,
115
+ filter: req.query.filter,
116
+ });
117
+ throw new __1.ResponseHelper.ResponseError('Failed to parse filter');
118
+ }
119
+ }
120
+ const query = {
121
+ select: ['id', 'name', 'active', 'createdAt', 'updatedAt'],
122
+ relations: ['tags'],
123
+ };
124
+ if (config_1.default.getEnv('workflowTagsDisabled')) {
125
+ delete query.relations;
126
+ }
127
+ if (req.user.globalRole.name === 'owner') {
128
+ workflows = await __1.Db.collections.Workflow.find(Object.assign(query, {
129
+ where: filter,
130
+ }));
131
+ }
132
+ else {
133
+ const shared = await __1.Db.collections.SharedWorkflow.find({
134
+ relations: ['workflow'],
135
+ where: (0, __1.whereClause)({
136
+ user: req.user,
137
+ entityType: 'workflow',
138
+ }),
139
+ });
140
+ if (!shared.length)
141
+ return [];
142
+ workflows = await __1.Db.collections.Workflow.find(Object.assign(query, {
143
+ where: Object.assign({ id: (0, typeorm_1.In)(shared.map(({ workflow }) => workflow.id)) }, filter),
144
+ }));
145
+ }
146
+ return workflows.map((workflow) => {
147
+ const { id } = workflow, rest = __rest(workflow, ["id"]);
148
+ return Object.assign({ id: id.toString() }, rest);
149
+ });
150
+ }));
151
+ exports.workflowsController.get(`/new`, __1.ResponseHelper.send(async (req) => {
152
+ var _a;
153
+ const requestedName = req.query.name && req.query.name !== ''
154
+ ? req.query.name
155
+ : config_1.default.getEnv('workflows.defaultName');
156
+ const name = await __1.GenericHelpers.generateUniqueName(requestedName, 'workflow');
157
+ const onboardingFlowEnabled = !config_1.default.getEnv('workflows.onboardingFlowDisabled') &&
158
+ !((_a = req.user.settings) === null || _a === void 0 ? void 0 : _a.isOnboarded) &&
159
+ (await (0, WorkflowHelpers_1.isBelowOnboardingThreshold)(req.user));
160
+ return { name, onboardingFlowEnabled };
161
+ }));
162
+ exports.workflowsController.get(`/from-url`, __1.ResponseHelper.send(async (req) => {
163
+ if (req.query.url === undefined) {
164
+ throw new __1.ResponseHelper.ResponseError(`The parameter "url" is missing!`, undefined, 400);
165
+ }
166
+ if (!/^http[s]?:\/\/.*\.json$/i.exec(req.query.url)) {
167
+ throw new __1.ResponseHelper.ResponseError(`The parameter "url" is not valid! It does not seem to be a URL pointing to a n8n workflow JSON file.`, undefined, 400);
168
+ }
169
+ let workflowData;
170
+ try {
171
+ const { data } = await axios_1.default.get(req.query.url);
172
+ workflowData = data;
173
+ }
174
+ catch (error) {
175
+ throw new __1.ResponseHelper.ResponseError(`The URL does not point to valid JSON file!`, undefined, 400);
176
+ }
177
+ if (workflowData === undefined ||
178
+ workflowData.nodes === undefined ||
179
+ !Array.isArray(workflowData.nodes) ||
180
+ workflowData.connections === undefined ||
181
+ typeof workflowData.connections !== 'object' ||
182
+ Array.isArray(workflowData.connections)) {
183
+ throw new __1.ResponseHelper.ResponseError(`The data in the file does not seem to be a n8n workflow JSON file!`, undefined, 400);
184
+ }
185
+ return workflowData;
186
+ }));
95
187
  exports.workflowsController.get('/:id', __1.ResponseHelper.send(async (req) => {
96
188
  const { id: workflowId } = req.params;
97
189
  let relations = ['workflow', 'workflow.tags'];
@@ -116,4 +208,174 @@ exports.workflowsController.get('/:id', __1.ResponseHelper.send(async (req) => {
116
208
  const _a = shared.workflow, { id } = _a, rest = __rest(_a, ["id"]);
117
209
  return Object.assign({ id: id.toString() }, rest);
118
210
  }));
211
+ exports.workflowsController.patch(`/:id`, __1.ResponseHelper.send(async (req) => {
212
+ var _a;
213
+ const { id: workflowId } = req.params;
214
+ const updateData = new WorkflowEntity_1.WorkflowEntity();
215
+ const _b = req.body, { tags } = _b, rest = __rest(_b, ["tags"]);
216
+ Object.assign(updateData, rest);
217
+ const shared = await __1.Db.collections.SharedWorkflow.findOne({
218
+ relations: ['workflow'],
219
+ where: (0, __1.whereClause)({
220
+ user: req.user,
221
+ entityType: 'workflow',
222
+ entityId: workflowId,
223
+ }),
224
+ });
225
+ if (!shared) {
226
+ n8n_workflow_1.LoggerProxy.info('User attempted to update a workflow without permissions', {
227
+ workflowId,
228
+ userId: req.user.id,
229
+ });
230
+ throw new __1.ResponseHelper.ResponseError(`Workflow with ID "${workflowId}" could not be found to be updated.`, undefined, 404);
231
+ }
232
+ await __1.WorkflowHelpers.replaceInvalidCredentials(updateData);
233
+ __1.WorkflowHelpers.addNodeIds(updateData);
234
+ await Server_1.externalHooks.run('workflow.update', [updateData]);
235
+ if (shared.workflow.active) {
236
+ await activeWorkflowRunner.remove(workflowId);
237
+ }
238
+ if (updateData.settings) {
239
+ if (updateData.settings.timezone === 'DEFAULT') {
240
+ delete updateData.settings.timezone;
241
+ }
242
+ if (updateData.settings.saveDataErrorExecution === 'DEFAULT') {
243
+ delete updateData.settings.saveDataErrorExecution;
244
+ }
245
+ if (updateData.settings.saveDataSuccessExecution === 'DEFAULT') {
246
+ delete updateData.settings.saveDataSuccessExecution;
247
+ }
248
+ if (updateData.settings.saveManualExecutions === 'DEFAULT') {
249
+ delete updateData.settings.saveManualExecutions;
250
+ }
251
+ if (parseInt(updateData.settings.executionTimeout, 10) ===
252
+ config_1.default.get('executions.timeout')) {
253
+ delete updateData.settings.executionTimeout;
254
+ }
255
+ }
256
+ if (updateData.name) {
257
+ updateData.updatedAt = new Date();
258
+ await (0, GenericHelpers_1.validateEntity)(updateData);
259
+ }
260
+ await __1.Db.collections.Workflow.update(workflowId, updateData);
261
+ if (tags && !config_1.default.getEnv('workflowTagsDisabled')) {
262
+ const tablePrefix = config_1.default.getEnv('database.tablePrefix');
263
+ await TagHelpers.removeRelations(workflowId, tablePrefix);
264
+ if (tags.length) {
265
+ await TagHelpers.createRelations(workflowId, tags, tablePrefix);
266
+ }
267
+ }
268
+ const options = {
269
+ relations: ['tags'],
270
+ };
271
+ if (config_1.default.getEnv('workflowTagsDisabled')) {
272
+ delete options.relations;
273
+ }
274
+ const updatedWorkflow = await __1.Db.collections.Workflow.findOne(workflowId, options);
275
+ if (updatedWorkflow === undefined) {
276
+ throw new __1.ResponseHelper.ResponseError(`Workflow with ID "${workflowId}" could not be found to be updated.`, undefined, 400);
277
+ }
278
+ if (((_a = updatedWorkflow.tags) === null || _a === void 0 ? void 0 : _a.length) && (tags === null || tags === void 0 ? void 0 : tags.length)) {
279
+ updatedWorkflow.tags = TagHelpers.sortByRequestOrder(updatedWorkflow.tags, {
280
+ requestOrder: tags,
281
+ });
282
+ }
283
+ await Server_1.externalHooks.run('workflow.afterUpdate', [updatedWorkflow]);
284
+ void InternalHooksManager_1.InternalHooksManager.getInstance().onWorkflowSaved(req.user.id, updatedWorkflow, false);
285
+ if (updatedWorkflow.active) {
286
+ try {
287
+ await Server_1.externalHooks.run('workflow.activate', [updatedWorkflow]);
288
+ await activeWorkflowRunner.add(workflowId, shared.workflow.active ? 'update' : 'activate');
289
+ }
290
+ catch (error) {
291
+ updateData.active = false;
292
+ await __1.Db.collections.Workflow.update(workflowId, updateData);
293
+ updatedWorkflow.active = false;
294
+ throw error;
295
+ }
296
+ }
297
+ const { id } = updatedWorkflow, remainder = __rest(updatedWorkflow, ["id"]);
298
+ return Object.assign({ id: id.toString() }, remainder);
299
+ }));
300
+ exports.workflowsController.delete(`/:id`, __1.ResponseHelper.send(async (req) => {
301
+ const { id: workflowId } = req.params;
302
+ await Server_1.externalHooks.run('workflow.delete', [workflowId]);
303
+ const shared = await __1.Db.collections.SharedWorkflow.findOne({
304
+ relations: ['workflow'],
305
+ where: (0, __1.whereClause)({
306
+ user: req.user,
307
+ entityType: 'workflow',
308
+ entityId: workflowId,
309
+ }),
310
+ });
311
+ if (!shared) {
312
+ n8n_workflow_1.LoggerProxy.info('User attempted to delete a workflow without permissions', {
313
+ workflowId,
314
+ userId: req.user.id,
315
+ });
316
+ throw new __1.ResponseHelper.ResponseError(`Workflow with ID "${workflowId}" could not be found to be deleted.`, undefined, 400);
317
+ }
318
+ if (shared.workflow.active) {
319
+ await activeWorkflowRunner.remove(workflowId);
320
+ }
321
+ await __1.Db.collections.Workflow.delete(workflowId);
322
+ void InternalHooksManager_1.InternalHooksManager.getInstance().onWorkflowDeleted(req.user.id, workflowId, false);
323
+ await Server_1.externalHooks.run('workflow.afterDelete', [workflowId]);
324
+ return true;
325
+ }));
326
+ exports.workflowsController.post(`/run`, __1.ResponseHelper.send(async (req) => {
327
+ var _a;
328
+ const { workflowData } = req.body;
329
+ const { runData } = req.body;
330
+ const { pinData } = req.body;
331
+ const { startNodes } = req.body;
332
+ const { destinationNode } = req.body;
333
+ const executionMode = 'manual';
334
+ const activationMode = 'manual';
335
+ const sessionId = __1.GenericHelpers.getSessionId(req);
336
+ const pinnedTrigger = findFirstPinnedTrigger(workflowData, pinData);
337
+ if (pinnedTrigger === undefined &&
338
+ (runData === undefined ||
339
+ startNodes === undefined ||
340
+ startNodes.length === 0 ||
341
+ destinationNode === undefined)) {
342
+ const additionalData = await __1.WorkflowExecuteAdditionalData.getBase(req.user.id);
343
+ const nodeTypes = (0, __1.NodeTypes)();
344
+ const workflowInstance = new n8n_workflow_1.Workflow({
345
+ id: (_a = workflowData.id) === null || _a === void 0 ? void 0 : _a.toString(),
346
+ name: workflowData.name,
347
+ nodes: workflowData.nodes,
348
+ connections: workflowData.connections,
349
+ active: false,
350
+ nodeTypes,
351
+ staticData: undefined,
352
+ settings: workflowData.settings,
353
+ });
354
+ const needsWebhook = await __1.TestWebhooks.getInstance().needsWebhookData(workflowData, workflowInstance, additionalData, executionMode, activationMode, sessionId, destinationNode);
355
+ if (needsWebhook) {
356
+ return {
357
+ waitingForWebhook: true,
358
+ };
359
+ }
360
+ }
361
+ workflowData.active = false;
362
+ const data = {
363
+ destinationNode,
364
+ executionMode,
365
+ runData,
366
+ pinData,
367
+ sessionId,
368
+ startNodes,
369
+ workflowData,
370
+ userId: req.user.id,
371
+ };
372
+ if (pinnedTrigger) {
373
+ data.startNodes = [pinnedTrigger.name];
374
+ }
375
+ const workflowRunner = new __1.WorkflowRunner();
376
+ const executionId = await workflowRunner.run(data);
377
+ return {
378
+ executionId,
379
+ };
380
+ }));
119
381
  //# sourceMappingURL=workflows.api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.api.js","sourceRoot":"","sources":["../../../src/api/workflows.api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.api.js","sourceRoot":"","sources":["../../../src/api/workflows.api.ts"],"names":[],"mappings":"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"}
@@ -106,7 +106,7 @@ class CreateUserManagement1646992772331 {
106
106
  await queryRunner.query(`INSERT INTO ${tablePrefix}user (id, globalRoleId, personalizationAnswers) values (?, ?, ?)`, [ownerUserId, instanceOwnerRole[0].insertId, survey]);
107
107
  await queryRunner.query(`INSERT INTO ${tablePrefix}shared_workflow (createdAt, updatedAt, roleId, userId, workflowId) select
108
108
  NOW(), NOW(), '${workflowOwnerRole[0].insertId}', '${ownerUserId}', id FROM ${tablePrefix}workflow_entity`);
109
- await queryRunner.query(`INSERT INTO ${tablePrefix}shared_credentials (createdAt, updatedAt, roleId, userId, credentialsId) SELECT NOW(), NOW(), '${credentialOwnerRole[0].insertId}', '${ownerUserId}', id FROM ${tablePrefix} credentials_entity`);
109
+ await queryRunner.query(`INSERT INTO ${tablePrefix}shared_credentials (createdAt, updatedAt, roleId, userId, credentialsId) SELECT NOW(), NOW(), '${credentialOwnerRole[0].insertId}', '${ownerUserId}', id FROM ${tablePrefix}credentials_entity`);
110
110
  await queryRunner.query(`INSERT INTO ${tablePrefix}settings (\`key\`, value, loadOnStartup) VALUES ("userManagement.isInstanceOwnerSetUp", "false", 1), ("userManagement.skipInstanceOwnerSetup", "false", 1)`);
111
111
  }
112
112
  async down(queryRunner) {
@@ -1 +1 @@
1
- {"version":3,"file":"1646992772331-CreateUserManagement.js","sourceRoot":"","sources":["../../../../../src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"1646992772331-CreateUserManagement.js","sourceRoot":"","sources":["../../../../../src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ declare const _default: ({
2
2
  name: string;
3
3
  type: string;
4
4
  logging: boolean;
5
- entities: (typeof import("./entities/Settings").Settings | typeof import("./entities/InstalledNodes").InstalledNodes | typeof import("./entities/InstalledPackages").InstalledPackages | typeof import("./entities/TagEntity").TagEntity | typeof import("./entities/WorkflowEntity").WorkflowEntity | typeof import("./entities/SharedWorkflow").SharedWorkflow | typeof import("./entities/Role").Role | typeof import("./entities/User").User | typeof import("./entities/SharedCredentials").SharedCredentials | typeof import("./entities/CredentialsEntity").CredentialsEntity | typeof import("./entities/ExecutionEntity").ExecutionEntity | typeof import("./entities/WebhookEntity").WebhookEntity)[];
5
+ entities: (typeof import("./entities/CredentialsEntity").CredentialsEntity | typeof import("./entities/SharedCredentials").SharedCredentials | typeof import("./entities/Role").Role | typeof import("./entities/User").User | typeof import("./entities/Settings").Settings | typeof import("./entities/InstalledNodes").InstalledNodes | typeof import("./entities/InstalledPackages").InstalledPackages | typeof import("./entities/TagEntity").TagEntity | typeof import("./entities/WorkflowEntity").WorkflowEntity | typeof import("./entities/SharedWorkflow").SharedWorkflow | typeof import("./entities/ExecutionEntity").ExecutionEntity | typeof import("./entities/WebhookEntity").WebhookEntity)[];
6
6
  database: string;
7
7
  migrations: string[];
8
8
  cli: {
@@ -24,7 +24,7 @@ declare const _default: ({
24
24
  host: string;
25
25
  port: number;
26
26
  logging: boolean;
27
- entities: (typeof import("./entities/Settings").Settings | typeof import("./entities/InstalledNodes").InstalledNodes | typeof import("./entities/InstalledPackages").InstalledPackages | typeof import("./entities/TagEntity").TagEntity | typeof import("./entities/WorkflowEntity").WorkflowEntity | typeof import("./entities/SharedWorkflow").SharedWorkflow | typeof import("./entities/Role").Role | typeof import("./entities/User").User | typeof import("./entities/SharedCredentials").SharedCredentials | typeof import("./entities/CredentialsEntity").CredentialsEntity | typeof import("./entities/ExecutionEntity").ExecutionEntity | typeof import("./entities/WebhookEntity").WebhookEntity)[];
27
+ entities: (typeof import("./entities/CredentialsEntity").CredentialsEntity | typeof import("./entities/SharedCredentials").SharedCredentials | typeof import("./entities/Role").Role | typeof import("./entities/User").User | typeof import("./entities/Settings").Settings | typeof import("./entities/InstalledNodes").InstalledNodes | typeof import("./entities/InstalledPackages").InstalledPackages | typeof import("./entities/TagEntity").TagEntity | typeof import("./entities/WorkflowEntity").WorkflowEntity | typeof import("./entities/SharedWorkflow").SharedWorkflow | typeof import("./entities/ExecutionEntity").ExecutionEntity | typeof import("./entities/WebhookEntity").WebhookEntity)[];
28
28
  migrations: string[];
29
29
  cli: {
30
30
  entitiesDir: string;
@@ -39,7 +39,7 @@ declare const _default: ({
39
39
  host: string;
40
40
  port: number;
41
41
  logging: boolean;
42
- entities: (typeof import("./entities/Settings").Settings | typeof import("./entities/InstalledNodes").InstalledNodes | typeof import("./entities/InstalledPackages").InstalledPackages | typeof import("./entities/TagEntity").TagEntity | typeof import("./entities/WorkflowEntity").WorkflowEntity | typeof import("./entities/SharedWorkflow").SharedWorkflow | typeof import("./entities/Role").Role | typeof import("./entities/User").User | typeof import("./entities/SharedCredentials").SharedCredentials | typeof import("./entities/CredentialsEntity").CredentialsEntity | typeof import("./entities/ExecutionEntity").ExecutionEntity | typeof import("./entities/WebhookEntity").WebhookEntity)[];
42
+ entities: (typeof import("./entities/CredentialsEntity").CredentialsEntity | typeof import("./entities/SharedCredentials").SharedCredentials | typeof import("./entities/Role").Role | typeof import("./entities/User").User | typeof import("./entities/Settings").Settings | typeof import("./entities/InstalledNodes").InstalledNodes | typeof import("./entities/InstalledPackages").InstalledPackages | typeof import("./entities/TagEntity").TagEntity | typeof import("./entities/WorkflowEntity").WorkflowEntity | typeof import("./entities/SharedWorkflow").SharedWorkflow | typeof import("./entities/ExecutionEntity").ExecutionEntity | typeof import("./entities/WebhookEntity").WebhookEntity)[];
43
43
  migrations: string[];
44
44
  cli: {
45
45
  entitiesDir: string;
@@ -59,7 +59,7 @@ afterAll(async () => {
59
59
  test('POST /credentials should create cred', async () => {
60
60
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
61
61
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
62
- const payload = credentialPayload();
62
+ const payload = (0, random_1.randomCredentialPayload)();
63
63
  const response = await authOwnerAgent.post('/credentials').send(payload);
64
64
  expect(response.statusCode).toBe(200);
65
65
  const { id, name, type, nodesAccess, data: encryptedData } = response.body.data;
@@ -92,7 +92,7 @@ test('POST /credentials should fail with missing encryption key', async () => {
92
92
  mock.mockRejectedValue(new Error(constants_1.RESPONSE_ERROR_MESSAGES.NO_ENCRYPTION_KEY));
93
93
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
94
94
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
95
- const response = await authOwnerAgent.post('/credentials').send(credentialPayload());
95
+ const response = await authOwnerAgent.post('/credentials').send((0, random_1.randomCredentialPayload)());
96
96
  expect(response.statusCode).toBe(500);
97
97
  mock.mockRestore();
98
98
  });
@@ -101,17 +101,17 @@ test('POST /credentials should ignore ID in payload', async () => {
101
101
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
102
102
  const firstResponse = await authOwnerAgent
103
103
  .post('/credentials')
104
- .send(Object.assign({ id: '8' }, credentialPayload()));
104
+ .send(Object.assign({ id: '8' }, (0, random_1.randomCredentialPayload)()));
105
105
  expect(firstResponse.body.data.id).not.toBe('8');
106
106
  const secondResponse = await authOwnerAgent
107
107
  .post('/credentials')
108
- .send(Object.assign({ id: 8 }, credentialPayload()));
108
+ .send(Object.assign({ id: 8 }, (0, random_1.randomCredentialPayload)()));
109
109
  expect(secondResponse.body.data.id).not.toBe(8);
110
110
  });
111
111
  test('DELETE /credentials/:id should delete owned cred for owner', async () => {
112
112
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
113
113
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
114
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
114
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
115
115
  const response = await authOwnerAgent.delete(`/credentials/${savedCredential.id}`);
116
116
  expect(response.statusCode).toBe(200);
117
117
  expect(response.body).toEqual({ data: true });
@@ -124,7 +124,7 @@ test('DELETE /credentials/:id should delete non-owned cred for owner', async ()
124
124
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
125
125
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
126
126
  const member = await testDb.createUser({ globalRole: globalMemberRole });
127
- const savedCredential = await saveCredential(credentialPayload(), { user: member });
127
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
128
128
  const response = await authOwnerAgent.delete(`/credentials/${savedCredential.id}`);
129
129
  expect(response.statusCode).toBe(200);
130
130
  expect(response.body).toEqual({ data: true });
@@ -136,7 +136,7 @@ test('DELETE /credentials/:id should delete non-owned cred for owner', async ()
136
136
  test('DELETE /credentials/:id should delete owned cred for member', async () => {
137
137
  const member = await testDb.createUser({ globalRole: globalMemberRole });
138
138
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
139
- const savedCredential = await saveCredential(credentialPayload(), { user: member });
139
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
140
140
  const response = await authMemberAgent.delete(`/credentials/${savedCredential.id}`);
141
141
  expect(response.statusCode).toBe(200);
142
142
  expect(response.body).toEqual({ data: true });
@@ -149,7 +149,7 @@ test('DELETE /credentials/:id should not delete non-owned cred for member', asyn
149
149
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
150
150
  const member = await testDb.createUser({ globalRole: globalMemberRole });
151
151
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
152
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
152
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
153
153
  const response = await authMemberAgent.delete(`/credentials/${savedCredential.id}`);
154
154
  expect(response.statusCode).toBe(404);
155
155
  const shellCredential = await src_1.Db.collections.Credentials.findOne(savedCredential.id);
@@ -166,8 +166,8 @@ test('DELETE /credentials/:id should fail if cred not found', async () => {
166
166
  test('PATCH /credentials/:id should update owned cred for owner', async () => {
167
167
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
168
168
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
169
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
170
- const patchPayload = credentialPayload();
169
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
170
+ const patchPayload = (0, random_1.randomCredentialPayload)();
171
171
  const response = await authOwnerAgent
172
172
  .patch(`/credentials/${savedCredential.id}`)
173
173
  .send(patchPayload);
@@ -192,8 +192,8 @@ test('PATCH /credentials/:id should update non-owned cred for owner', async () =
192
192
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
193
193
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
194
194
  const member = await testDb.createUser({ globalRole: globalMemberRole });
195
- const savedCredential = await saveCredential(credentialPayload(), { user: member });
196
- const patchPayload = credentialPayload();
195
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
196
+ const patchPayload = (0, random_1.randomCredentialPayload)();
197
197
  const response = await authOwnerAgent
198
198
  .patch(`/credentials/${savedCredential.id}`)
199
199
  .send(patchPayload);
@@ -217,8 +217,8 @@ test('PATCH /credentials/:id should update non-owned cred for owner', async () =
217
217
  test('PATCH /credentials/:id should update owned cred for member', async () => {
218
218
  const member = await testDb.createUser({ globalRole: globalMemberRole });
219
219
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
220
- const savedCredential = await saveCredential(credentialPayload(), { user: member });
221
- const patchPayload = credentialPayload();
220
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
221
+ const patchPayload = (0, random_1.randomCredentialPayload)();
222
222
  const response = await authMemberAgent
223
223
  .patch(`/credentials/${savedCredential.id}`)
224
224
  .send(patchPayload);
@@ -243,8 +243,8 @@ test('PATCH /credentials/:id should not update non-owned cred for member', async
243
243
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
244
244
  const member = await testDb.createUser({ globalRole: globalMemberRole });
245
245
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
246
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
247
- const patchPayload = credentialPayload();
246
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
247
+ const patchPayload = (0, random_1.randomCredentialPayload)();
248
248
  const response = await authMemberAgent
249
249
  .patch(`/credentials/${savedCredential.id}`)
250
250
  .send(patchPayload);
@@ -255,7 +255,7 @@ test('PATCH /credentials/:id should not update non-owned cred for member', async
255
255
  test('PATCH /credentials/:id should fail with invalid inputs', async () => {
256
256
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
257
257
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
258
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
258
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
259
259
  await Promise.all(INVALID_PAYLOADS.map(async (invalidPayload) => {
260
260
  const response = await authOwnerAgent
261
261
  .patch(`/credentials/${savedCredential.id}`)
@@ -266,7 +266,7 @@ test('PATCH /credentials/:id should fail with invalid inputs', async () => {
266
266
  test('PATCH /credentials/:id should fail if cred not found', async () => {
267
267
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
268
268
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
269
- const response = await authOwnerAgent.patch('/credentials/123').send(credentialPayload());
269
+ const response = await authOwnerAgent.patch('/credentials/123').send((0, random_1.randomCredentialPayload)());
270
270
  expect(response.statusCode).toBe(404);
271
271
  });
272
272
  test('PATCH /credentials/:id should fail with missing encryption key', async () => {
@@ -274,7 +274,7 @@ test('PATCH /credentials/:id should fail with missing encryption key', async ()
274
274
  mock.mockRejectedValue(new Error(constants_1.RESPONSE_ERROR_MESSAGES.NO_ENCRYPTION_KEY));
275
275
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
276
276
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
277
- const response = await authOwnerAgent.post('/credentials').send(credentialPayload());
277
+ const response = await authOwnerAgent.post('/credentials').send((0, random_1.randomCredentialPayload)());
278
278
  expect(response.statusCode).toBe(500);
279
279
  mock.mockRestore();
280
280
  });
@@ -282,10 +282,10 @@ test('GET /credentials should retrieve all creds for owner', async () => {
282
282
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
283
283
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
284
284
  for (let i = 0; i < 3; i++) {
285
- await saveCredential(credentialPayload(), { user: ownerShell });
285
+ await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
286
286
  }
287
287
  const member = await testDb.createUser({ globalRole: globalMemberRole });
288
- await saveCredential(credentialPayload(), { user: member });
288
+ await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
289
289
  const response = await authOwnerAgent.get('/credentials');
290
290
  expect(response.statusCode).toBe(200);
291
291
  expect(response.body.data.length).toBe(4);
@@ -301,7 +301,7 @@ test('GET /credentials should retrieve owned creds for member', async () => {
301
301
  const member = await testDb.createUser({ globalRole: globalMemberRole });
302
302
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
303
303
  for (let i = 0; i < 3; i++) {
304
- await saveCredential(credentialPayload(), { user: member });
304
+ await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
305
305
  }
306
306
  const response = await authMemberAgent.get('/credentials');
307
307
  expect(response.statusCode).toBe(200);
@@ -319,7 +319,7 @@ test('GET /credentials should not retrieve non-owned creds for member', async ()
319
319
  const member = await testDb.createUser({ globalRole: globalMemberRole });
320
320
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
321
321
  for (let i = 0; i < 3; i++) {
322
- await saveCredential(credentialPayload(), { user: ownerShell });
322
+ await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
323
323
  }
324
324
  const response = await authMemberAgent.get('/credentials');
325
325
  expect(response.statusCode).toBe(200);
@@ -328,7 +328,7 @@ test('GET /credentials should not retrieve non-owned creds for member', async ()
328
328
  test('GET /credentials/:id should retrieve owned cred for owner', async () => {
329
329
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
330
330
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
331
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
331
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
332
332
  const firstResponse = await authOwnerAgent.get(`/credentials/${savedCredential.id}`);
333
333
  expect(firstResponse.statusCode).toBe(200);
334
334
  expect(typeof firstResponse.body.data.name).toBe('string');
@@ -347,7 +347,7 @@ test('GET /credentials/:id should retrieve owned cred for owner', async () => {
347
347
  test('GET /credentials/:id should retrieve owned cred for member', async () => {
348
348
  const member = await testDb.createUser({ globalRole: globalMemberRole });
349
349
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
350
- const savedCredential = await saveCredential(credentialPayload(), { user: member });
350
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: member });
351
351
  const firstResponse = await authMemberAgent.get(`/credentials/${savedCredential.id}`);
352
352
  expect(firstResponse.statusCode).toBe(200);
353
353
  expect(typeof firstResponse.body.data.name).toBe('string');
@@ -367,7 +367,7 @@ test('GET /credentials/:id should not retrieve non-owned cred for member', async
367
367
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
368
368
  const member = await testDb.createUser({ globalRole: globalMemberRole });
369
369
  const authMemberAgent = utils.createAgent(app, { auth: true, user: member });
370
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
370
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
371
371
  const response = await authMemberAgent.get(`/credentials/${savedCredential.id}`);
372
372
  expect(response.statusCode).toBe(404);
373
373
  expect(response.body.data).toBeUndefined();
@@ -375,7 +375,7 @@ test('GET /credentials/:id should not retrieve non-owned cred for member', async
375
375
  test('GET /credentials/:id should fail with missing encryption key', async () => {
376
376
  const ownerShell = await testDb.createUserShell(globalOwnerRole);
377
377
  const authOwnerAgent = utils.createAgent(app, { auth: true, user: ownerShell });
378
- const savedCredential = await saveCredential(credentialPayload(), { user: ownerShell });
378
+ const savedCredential = await saveCredential((0, random_1.randomCredentialPayload)(), { user: ownerShell });
379
379
  const mock = jest.spyOn(n8n_core_1.UserSettings, 'getEncryptionKey');
380
380
  mock.mockRejectedValue(new Error(constants_1.RESPONSE_ERROR_MESSAGES.NO_ENCRYPTION_KEY));
381
381
  const response = await authOwnerAgent
@@ -390,12 +390,6 @@ test('GET /credentials/:id should return 404 if cred not found', async () => {
390
390
  const response = await authMemberAgent.get('/credentials/789');
391
391
  expect(response.statusCode).toBe(404);
392
392
  });
393
- const credentialPayload = () => ({
394
- name: (0, random_1.randomName)(),
395
- type: (0, random_1.randomName)(),
396
- nodesAccess: [{ nodeType: (0, random_1.randomName)() }],
397
- data: { accessToken: (0, random_1.randomString)(6, 16) },
398
- });
399
393
  const INVALID_PAYLOADS = [
400
394
  {
401
395
  type: (0, random_1.randomName)(),