Files
claude-task-master/test-telemetry-integration.js

96 lines
2.9 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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!");