From f6c9493355726ddf516fb54a37adf49a2ce0efd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Tue, 30 Apr 2024 11:39:24 +0200 Subject: [PATCH] fix(core): Prevent node param resolution from failing telemetry graph generation (#9257) --- packages/workflow/src/TelemetryHelpers.ts | 22 ++++++++++++------- .../workflow/test/TelemetryHelpers.test.ts | 14 +++++++++++- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/packages/workflow/src/TelemetryHelpers.ts b/packages/workflow/src/TelemetryHelpers.ts index f93b7337d4..f2f51e9c7d 100644 --- a/packages/workflow/src/TelemetryHelpers.ts +++ b/packages/workflow/src/TelemetryHelpers.ts @@ -126,14 +126,20 @@ export function generateNodesGraph( return; } - const nodeParameters = - getNodeParameters( - stickyType.description.properties, - stickyNote.parameters, - true, - false, - stickyNote, - ) ?? {}; + let nodeParameters: IDataObject = {}; + + try { + nodeParameters = + getNodeParameters( + stickyType.description.properties, + stickyNote.parameters, + true, + false, + stickyNote, + ) ?? {}; + } catch { + // prevent node param resolution from failing graph generation + } const height: number = typeof nodeParameters.height === 'number' ? nodeParameters.height : 0; const width: number = typeof nodeParameters.width === 'number' ? nodeParameters.width : 0; diff --git a/packages/workflow/test/TelemetryHelpers.test.ts b/packages/workflow/test/TelemetryHelpers.test.ts index 203a217e18..11f741e79a 100644 --- a/packages/workflow/test/TelemetryHelpers.test.ts +++ b/packages/workflow/test/TelemetryHelpers.test.ts @@ -5,8 +5,10 @@ import { getDomainBase, getDomainPath, } from '@/TelemetryHelpers'; -import type { IWorkflowBase } from '@/index'; +import { ApplicationError, STICKY_NODE_TYPE, type IWorkflowBase } from '@/index'; import { nodeTypes } from './ExpressionExtensions/Helpers'; +import { mock } from 'jest-mock-extended'; +import * as nodeHelpers from '@/NodeHelpers'; describe('getDomainBase should return protocol plus domain', () => { test('in valid URLs', () => { @@ -763,6 +765,16 @@ describe('generateNodesGraph', () => { webhookNodeNames: [], }); }); + + test('should not fail on error to resolve a node parameter for sticky node type', () => { + const workflow = mock({ nodes: [{ type: STICKY_NODE_TYPE }] }); + + jest.spyOn(nodeHelpers, 'getNodeParameters').mockImplementationOnce(() => { + throw new ApplicationError('Could not find property option'); + }); + + expect(() => generateNodesGraph(workflow, nodeTypes)).not.toThrow(); + }); }); function validUrls(idMaker: typeof alphanumericId | typeof email, char = CHAR) {