#!/usr/bin/env node /** * Integration test for telemetry submission with real gateway */ import { submitTelemetryData } from "./scripts/modules/telemetry-submission.js"; // Test data from the gateway registration const TEST_API_KEY = "554d9e2a-9c07-4f69-a449-a2bda0ff06e7"; const TEST_USER_ID = "c81e686a-a37c-4dc4-ac23-0849f70a9a52"; async function testTelemetrySubmission() { console.log("๐Ÿงช Testing telemetry submission with real gateway...\n"); // Create test telemetry data const telemetryData = { timestamp: new Date().toISOString(), userId: TEST_USER_ID, commandName: "add-task", modelUsed: "claude-3-sonnet", providerName: "anthropic", inputTokens: 150, outputTokens: 75, totalTokens: 225, totalCost: 0.0045, currency: "USD", // These should be filtered out before submission commandArgs: { id: "15", prompt: "Test task creation", apiKey: "sk-secret-key-should-be-filtered", }, fullOutput: { title: "Generated Task", description: "AI generated task description", internalDebugData: "This should not be sent to gateway", }, }; console.log("๐Ÿ“ค Submitting telemetry data..."); console.log("Data to submit:", JSON.stringify(telemetryData, null, 2)); console.log( "\nโš ๏ธ Note: commandArgs and fullOutput should be filtered out before submission\n" ); try { const result = await submitTelemetryData(telemetryData); console.log("โœ… Telemetry submission result:"); console.log(JSON.stringify(result, null, 2)); if (result.success) { console.log("\n๐ŸŽ‰ SUCCESS: Telemetry data submitted successfully!"); if (result.id) { console.log(`๐Ÿ“ Gateway assigned ID: ${result.id}`); } console.log(`๐Ÿ”„ Completed in ${result.attempt || 1} attempt(s)`); } else { console.log("\nโŒ FAILED: Telemetry submission failed"); console.log(`Error: ${result.error}`); } } catch (error) { console.error( "\n๐Ÿ’ฅ EXCEPTION: Unexpected error during telemetry submission" ); console.error(error); } } // Test with manual curl to verify endpoint works async function testWithCurl() { console.log("\n๐Ÿ”ง Testing with direct curl for comparison...\n"); const testData = { timestamp: new Date().toISOString(), userId: TEST_USER_ID, commandName: "curl-test", modelUsed: "claude-3-sonnet", totalCost: 0.001, currency: "USD", }; console.log("Curl command that should work:"); console.log(`curl -X POST http://localhost:4444/api/v1/telemetry \\`); console.log(` -H "Content-Type: application/json" \\`); console.log(` -H "X-API-Key: ${TEST_API_KEY}" \\`); console.log(` -d '${JSON.stringify(testData)}'`); } // Run the tests console.log("๐Ÿš€ Starting telemetry integration tests...\n"); await testTelemetrySubmission(); await testWithCurl(); console.log("\nโœจ Integration test complete!");