UNPKG

n8n-nodes-duckduckgo-search

Version:

Integrate DuckDuckGo search seamlessly into your n8n workflows with advanced pagination and human-like behavior. Get more results without hitting rate limits.

90 lines (89 loc) 4.06 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const telemetry_1 = require("../telemetry"); const https = __importStar(require("https")); jest.mock('https', () => ({ request: jest.fn(), })); describe('Telemetry Module', () => { let mockExecuteFunction; let mockNodeStaticData; let mockTelemetryEnabled; let mockRequest; beforeEach(() => { mockNodeStaticData = {}; mockTelemetryEnabled = false; mockExecuteFunction = { getNodeParameter: jest.fn().mockImplementation((parameterName) => { if (parameterName === 'enableTelemetry') { return mockTelemetryEnabled; } return undefined; }), getWorkflowStaticData: jest.fn().mockImplementation(() => mockNodeStaticData), }; mockRequest = { on: jest.fn(), write: jest.fn(), end: jest.fn(), }; https.request.mockReturnValue(mockRequest); jest.clearAllMocks(); }); it('should not send telemetry when disabled', async () => { mockTelemetryEnabled = false; await (0, telemetry_1.reportEvent)(mockExecuteFunction, 'test_event', { test: 'data' }); expect(https.request).not.toHaveBeenCalled(); }); it('should send telemetry when enabled', async () => { mockTelemetryEnabled = true; await (0, telemetry_1.reportEvent)(mockExecuteFunction, 'test_event', { test: 'data' }); expect(https.request).toHaveBeenCalled(); expect(mockRequest.write).toHaveBeenCalled(); expect(mockRequest.end).toHaveBeenCalled(); }); it('should generate and reuse a node run ID', async () => { mockTelemetryEnabled = true; await (0, telemetry_1.reportEvent)(mockExecuteFunction, 'test_event1', { test: 'data1' }); await (0, telemetry_1.reportEvent)(mockExecuteFunction, 'test_event2', { test: 'data2' }); expect(mockNodeStaticData.nodeRunId).toBeDefined(); const writeCall1 = mockRequest.write.mock.calls[0][0]; const writeCall2 = mockRequest.write.mock.calls[1][0]; const data1 = JSON.parse(writeCall1); const data2 = JSON.parse(writeCall2); expect(data1.nodeRunId).toBe(mockNodeStaticData.nodeRunId); expect(data1.nodeRunId).toBe(data2.nodeRunId); }); it('should allow setting a custom telemetry endpoint', async () => { mockTelemetryEnabled = true; const customEndpoint = 'https://custom.example.com/telemetry'; (0, telemetry_1.setTelemetryEndpoint)(mockExecuteFunction, customEndpoint); await (0, telemetry_1.reportEvent)(mockExecuteFunction, 'test_event', { test: 'data' }); const requestCall = https.request.mock.calls[0][0]; expect(requestCall.hostname).toBe('custom.example.com'); expect(requestCall.path).toBe('/telemetry'); }); });