fix(Telegram Trigger Node): Drop pending updates when creating a new webhook (#29103)

This commit is contained in:
RomanDavydchuk
2026-04-29 13:57:52 +00:00
committed by GitHub
parent 1516ec7c06
commit 4358f1d51c
2 changed files with 49 additions and 3 deletions
@@ -19,8 +19,8 @@ export class TelegramTrigger implements INodeType {
name: 'telegramTrigger',
icon: 'file:telegram.svg',
group: ['trigger'],
version: [1, 1.1, 1.2],
defaultVersion: 1.2,
version: [1, 1.1, 1.2, 1.3],
defaultVersion: 1.3,
subtitle: '=Updates: {{$parameter["updates"].join(", ")}}',
description: 'Starts the workflow on a Telegram update',
defaults: {
@@ -226,10 +226,13 @@ export class TelegramTrigger implements INodeType {
const secret_token = getSecretToken.call(this);
const drop_pending_updates = this.getNode().typeVersion >= 1.3;
const body = {
url: webhookUrl,
allowed_updates: allowedUpdates,
secret_token,
drop_pending_updates,
};
await apiRequest.call(this, 'POST', endpoint, body);
@@ -1,8 +1,9 @@
import { mock } from 'jest-mock-extended';
import { type INode, type Workflow } from 'n8n-workflow';
import type { IHookFunctions, INode, Workflow } from 'n8n-workflow';
import { testWebhookTriggerNode } from '@test/nodes/TriggerHelpers';
import { apiRequest } from '../GenericFunctions';
import { TelegramTrigger } from '../TelegramTrigger.node';
jest.mock('../GenericFunctions', () => {
@@ -173,4 +174,46 @@ describe('TelegramTrigger', () => {
expect(responseData).toEqual({ workflowData: [[{ json: mockResult }]] });
});
});
describe('create', () => {
test('should set drop_pending_updates for version 1.3', async () => {
const telegramTrigger = new TelegramTrigger();
const mockHookFunctions = mock<IHookFunctions>({
getNodeWebhookUrl: jest.fn().mockReturnValue('https://example.com/webhook'),
getNodeParameter: jest.fn().mockReturnValue(['message']),
getNode: jest.fn().mockReturnValue({ id: '2', typeVersion: 1.3 }),
getWorkflow: jest.fn().mockReturnValue({ id: '1' }),
});
await telegramTrigger.webhookMethods.default.create.call(mockHookFunctions);
expect(jest.mocked(apiRequest)).toHaveBeenCalledWith(
'POST',
'setWebhook',
expect.objectContaining({
drop_pending_updates: true,
}),
);
});
test('should not set drop_pending_updates for version 1.2', async () => {
const telegramTrigger = new TelegramTrigger();
const mockHookFunctions = mock<IHookFunctions>({
getNodeWebhookUrl: jest.fn().mockReturnValue('https://example.com/webhook'),
getNodeParameter: jest.fn().mockReturnValue(['*']),
getNode: jest.fn().mockReturnValue({ id: '2', typeVersion: 1.2 }),
getWorkflow: jest.fn().mockReturnValue({ id: '1' }),
});
await telegramTrigger.webhookMethods.default.create.call(mockHookFunctions);
expect(jest.mocked(apiRequest)).toHaveBeenCalledWith(
'POST',
'setWebhook',
expect.objectContaining({
drop_pending_updates: false,
}),
);
});
});
});