diff --git a/packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts b/packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts index 95682494d5c09..88d8688df7f6b 100644 --- a/packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts +++ b/packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts @@ -25,7 +25,7 @@ export async function restoreBinaryDataId(run: IRun, executionId: string) { const { runData } = run.data.resultData; const promises = Object.keys(runData).map(async (nodeName) => { - const binaryDataId = runData[nodeName]?.[0]?.data?.main?.[0]?.[0].binary?.data.id; + const binaryDataId = runData[nodeName]?.[0]?.data?.main?.[0]?.[0]?.binary?.data.id; if (!binaryDataId || !isMissingExecutionId(binaryDataId)) return; diff --git a/packages/cli/test/unit/execution.lifecycle.test.ts b/packages/cli/test/unit/execution.lifecycle.test.ts index 093bb3d286bd5..f68cf34f7dc1d 100644 --- a/packages/cli/test/unit/execution.lifecycle.test.ts +++ b/packages/cli/test/unit/execution.lifecycle.test.ts @@ -3,7 +3,7 @@ import { BinaryDataService } from 'n8n-core'; import { mockInstance } from '../integration/shared/utils/mocking'; import type { IRun } from 'n8n-workflow'; -function toIRun(item: object) { +function toIRun(item?: object) { return { data: { resultData: { @@ -84,4 +84,14 @@ describe('restoreBinaryDataId()', () => { expect(binaryDataService.rename).not.toHaveBeenCalled(); expect(getDataId(run, 'json')).toBe(dataId); }); + + it('should do nothing on itemless case', async () => { + const executionId = '999'; + + const promise = restoreBinaryDataId(toIRun(), executionId); + + await expect(promise).resolves.not.toThrow(); + + expect(binaryDataService.rename).not.toHaveBeenCalled(); + }); });