n8n/packages/workflow/test/run-execution-data/run-execution-data.test.ts
Elias Meire 5b6ee17c81
feat(core): Add signature validation for waiting webhooks and forms (#24159)
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
2026-03-23 11:48:52 +00:00

86 lines
2.0 KiB
TypeScript

import { migrateRunExecutionData } from '../../src/run-execution-data/run-execution-data';
import type { IRunExecutionDataV0 } from '../../src/run-execution-data/run-execution-data.v0';
import type { IRunExecutionDataV1 } from '../../src/run-execution-data/run-execution-data.v1';
describe('migrateRunExecutionData', () => {
it('should migrate IRunExecutionDataV0 to V1', () => {
const v0Data: IRunExecutionDataV0 = {
version: 0,
startData: {
startNodes: [],
destinationNode: 'TestNode',
originalDestinationNode: 'OriginalTestNode',
runNodeFilter: ['filter1'],
},
resultData: {
runData: {},
lastNodeExecuted: 'LastNode',
metadata: { key: 'value' },
},
executionData: {
contextData: {},
nodeExecutionStack: [],
metadata: {},
waitingExecution: {},
waitingExecutionSource: null,
},
resumeToken: 'test-token-123',
pushRef: 'test-ref',
};
const result = migrateRunExecutionData(v0Data);
expect(result).toEqual({
...v0Data,
version: 1,
startData: {
...v0Data.startData,
destinationNode: {
nodeName: 'TestNode',
mode: 'inclusive',
},
originalDestinationNode: {
nodeName: 'OriginalTestNode',
mode: 'inclusive',
},
},
});
});
it('should return V1 data unchanged (no-op)', () => {
const v1Data: IRunExecutionDataV1 = {
version: 1,
startData: {
startNodes: [],
destinationNode: {
nodeName: 'TestNode',
mode: 'exclusive',
},
originalDestinationNode: {
nodeName: 'OriginalTestNode',
mode: 'inclusive',
},
runNodeFilter: ['filter1'],
},
resultData: {
runData: {},
lastNodeExecuted: 'LastNode',
metadata: { key: 'value' },
},
executionData: {
contextData: {},
nodeExecutionStack: [],
metadata: {},
waitingExecution: {},
waitingExecutionSource: null,
},
resumeToken: 'test-token-123',
pushRef: 'test-ref',
};
const result = migrateRunExecutionData(v1Data);
expect(result).toEqual(v1Data);
});
});