mirror of
https://github.com/n8n-io/n8n.git
synced 2026-09-24 23:22:38 +08:00
fix(Telegram Trigger Node): Drop pending updates when creating a new webhook (#29103)
This commit is contained in:
@@ -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,
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user