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
JavaScript
;
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');
});
});