diff --git a/packages/editor-ui/src/components/ParameterInputHint.vue b/packages/editor-ui/src/components/ParameterInputHint.vue index 0acafdd721dc1..8a88ba4793a87 100644 --- a/packages/editor-ui/src/components/ParameterInputHint.vue +++ b/packages/editor-ui/src/components/ParameterInputHint.vue @@ -7,7 +7,7 @@ [$style.highlight]: highlight, }" > - +
{ + test('should resolve expression', async () => { + const { getByTestId } = renderComponent(ParameterInputWrapper, { + pinia: createTestingPinia({ + initialState: { + ndv: { + activeNodeName: 'testNode', + input: { nodeName: 'inputNode' }, + }, + }, + }), + props: { + parameter: { + name: 'test', + type: 'string', + }, + path: 'params.test', + modelValue: '={{ $secrets.infisical.password }}', + isForCredential: true, + }, + global: { + mocks: { + $workflowHelpers: { + resolveExpression: vi.fn(() => 'topSecret'), + }, + $ndvStore: { + activeNode: vi.fn(() => ({ test: 'test' })), + }, + }, + }, + }); + + expect(getByTestId('parameter-input-hint')).toHaveTextContent('[ERROR: ]'); + }); +}); diff --git a/packages/editor-ui/src/components/ParameterInputWrapper.vue b/packages/editor-ui/src/components/ParameterInputWrapper.vue index aebdcf229918d..7165bccf13c29 100644 --- a/packages/editor-ui/src/components/ParameterInputWrapper.vue +++ b/packages/editor-ui/src/components/ParameterInputWrapper.vue @@ -177,6 +177,8 @@ const evaluatedExpression = computed>(() => { }; } + if (props.isForCredential) opts.additionalKeys = resolvedAdditionalExpressionData.value; + return { ok: true, result: workflowHelpers.resolveExpression(value, undefined, opts) }; } catch (error) { return { ok: false, error }; diff --git a/packages/editor-ui/src/composables/useExpressionEditor.ts b/packages/editor-ui/src/composables/useExpressionEditor.ts index da66887319926..416080a8ad189 100644 --- a/packages/editor-ui/src/composables/useExpressionEditor.ts +++ b/packages/editor-ui/src/composables/useExpressionEditor.ts @@ -293,14 +293,13 @@ export const useExpressionEditor = ({ // e.g. credential modal result.resolved = Expression.resolveWithoutWorkflow(resolvable, toValue(additionalData)); } else { - let opts; + let opts: Record = { additionalKeys: toValue(additionalData) }; if (ndvStore.isInputParentOfActiveNode) { opts = { targetItem: target ?? undefined, inputNodeName: ndvStore.ndvInputNodeName, inputRunIndex: ndvStore.ndvInputRunIndex, inputBranchIndex: ndvStore.ndvInputBranchIndex, - additionalKeys: toValue(additionalData), }; } result.resolved = workflowHelpers.resolveExpression('=' + resolvable, undefined, opts);