206 lines
6.5 KiB
JavaScript
206 lines
6.5 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
// 🧪 TESTE DO API ANALYZER - Todas as Estratégias
|
|
// Script para testar as 4 estratégias de análise de API
|
|
|
|
const { APIAnalyzer, analyzeAPIForDomain } = require('./create-domain-v2-api-analyzer.js');
|
|
|
|
console.log('🧪 INICIANDO TESTES DO API ANALYZER...\n');
|
|
|
|
// Lista de domínios para testar
|
|
const testDomains = [
|
|
'drivers', // ✅ Existe na API
|
|
'vehicles', // ✅ Existe na API
|
|
'companies', // ✅ Existe na API
|
|
'users', // 🔍 Teste padrão
|
|
'products', // 🤖 Smart detection
|
|
'orders', // 🔄 Fallback
|
|
'testdomain' // 🔄 Fallback completo
|
|
];
|
|
|
|
async function testAllStrategies() {
|
|
const analyzer = new APIAnalyzer();
|
|
|
|
console.log('🎯 TESTANDO TODAS AS ESTRATÉGIAS...\n');
|
|
|
|
for (const domain of testDomains) {
|
|
console.log(`\n${'='.repeat(60)}`);
|
|
console.log(`🔍 TESTANDO DOMÍNIO: ${domain.toUpperCase()}`);
|
|
console.log('='.repeat(60));
|
|
|
|
try {
|
|
const result = await analyzer.analyzeAPI(domain);
|
|
|
|
if (result.success) {
|
|
console.log(`✅ SUCESSO! Estratégia usada: ${result.strategy}`);
|
|
console.log(`📊 Campos detectados: ${result.fields.length}`);
|
|
console.log(`📝 Metadados:`, JSON.stringify(result.metadata, null, 2));
|
|
|
|
// Mostrar início da interface gerada
|
|
const interfacePreview = result.interface.split('\n').slice(0, 10).join('\n');
|
|
console.log(`\n📋 Preview da Interface:`);
|
|
console.log('```typescript');
|
|
console.log(interfacePreview);
|
|
console.log('...');
|
|
console.log('```');
|
|
|
|
} else {
|
|
console.log('❌ FALHA em todas as estratégias');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.log(`❌ ERRO: ${error.message}`);
|
|
}
|
|
|
|
// Pausa entre testes para não sobrecarregar a API
|
|
await sleep(2000);
|
|
}
|
|
}
|
|
|
|
async function testSpecificStrategies() {
|
|
console.log('\n🎯 TESTANDO ESTRATÉGIAS ESPECÍFICAS...\n');
|
|
|
|
const analyzer = new APIAnalyzer();
|
|
|
|
// Teste 1: OpenAPI/Swagger
|
|
console.log('📋 TESTE 1: OpenAPI/Swagger');
|
|
try {
|
|
const result = await analyzer.analyzeOpenAPI('vehicles');
|
|
console.log(`OpenAPI Result:`, result.success ? '✅ Sucesso' : '❌ Falha');
|
|
if (result.success) {
|
|
console.log(`Schema detectado: ${result.metadata.schemaName}`);
|
|
}
|
|
} catch (error) {
|
|
console.log(`OpenAPI Error: ${error.message}`);
|
|
}
|
|
|
|
// Teste 2: API Response Analysis
|
|
console.log('\n🔍 TESTE 2: API Response Analysis');
|
|
try {
|
|
const result = await analyzer.analyzeAPIResponse('drivers');
|
|
console.log(`API Response Result:`, result.success ? '✅ Sucesso' : '❌ Falha');
|
|
if (result.success) {
|
|
console.log(`Endpoint usado: ${result.metadata.endpoint}`);
|
|
console.log(`Sample size: ${result.metadata.sampleSize}`);
|
|
}
|
|
} catch (error) {
|
|
console.log(`API Response Error: ${error.message}`);
|
|
}
|
|
|
|
// Teste 3: Smart Detection
|
|
console.log('\n🤖 TESTE 3: Smart Detection');
|
|
try {
|
|
const result = await analyzer.smartDetection('vehicle');
|
|
console.log(`Smart Detection Result:`, result.success ? '✅ Sucesso' : '❌ Falha');
|
|
if (result.success) {
|
|
console.log(`Padrões detectados: ${result.metadata.patterns.join(', ')}`);
|
|
}
|
|
} catch (error) {
|
|
console.log(`Smart Detection Error: ${error.message}`);
|
|
}
|
|
|
|
// Teste 4: Intelligent Fallback
|
|
console.log('\n🔄 TESTE 4: Intelligent Fallback');
|
|
try {
|
|
const result = analyzer.intelligentFallback('customdomain');
|
|
console.log(`Fallback Result:`, result.success ? '✅ Sucesso' : '❌ Falha');
|
|
if (result.success) {
|
|
console.log(`Base fields: ${result.metadata.baseFields}`);
|
|
console.log(`Specific fields: ${result.metadata.specificFields}`);
|
|
}
|
|
} catch (error) {
|
|
console.log(`Fallback Error: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
async function testPatternDetection() {
|
|
console.log('\n🎯 TESTANDO DETECÇÃO DE PADRÕES...\n');
|
|
|
|
const analyzer = new APIAnalyzer();
|
|
const testPatterns = [
|
|
'vehicle',
|
|
'car',
|
|
'truck',
|
|
'user',
|
|
'person',
|
|
'customer',
|
|
'product',
|
|
'item',
|
|
'company',
|
|
'organization',
|
|
'unknowndomain'
|
|
];
|
|
|
|
testPatterns.forEach(domain => {
|
|
const patterns = analyzer.getDomainPatterns(domain);
|
|
if (patterns.length > 0) {
|
|
console.log(`✅ ${domain}: ${patterns.length} padrões detectados`);
|
|
patterns.forEach(p => console.log(` - ${p.name} (${p.type}) - ${p.description}`));
|
|
} else {
|
|
console.log(`❌ ${domain}: Nenhum padrão detectado`);
|
|
}
|
|
console.log('');
|
|
});
|
|
}
|
|
|
|
async function testEndpoints() {
|
|
console.log('\n🔍 TESTANDO ENDPOINTS DA API...\n');
|
|
|
|
const analyzer = new APIAnalyzer();
|
|
const endpoints = [
|
|
'https://prafrota-be-bff-tenant-api.grupopra.tech/drivers?page=1&limit=1',
|
|
'https://prafrota-be-bff-tenant-api.grupopra.tech/vehicles?page=1&limit=1',
|
|
'https://prafrota-be-bff-tenant-api.grupopra.tech/companies?page=1&limit=1',
|
|
'https://prafrota-be-bff-tenant-api.grupopra.tech/api-docs',
|
|
'https://prafrota-be-bff-tenant-api.grupopra.tech/swagger.json'
|
|
];
|
|
|
|
for (const endpoint of endpoints) {
|
|
try {
|
|
console.log(`🔍 Testando: ${endpoint}`);
|
|
const data = await analyzer.fetchJSON(endpoint);
|
|
|
|
if (data) {
|
|
console.log(`✅ Sucesso! Tipo: ${Array.isArray(data) ? 'Array' : 'Object'}`);
|
|
if (data.data && Array.isArray(data.data)) {
|
|
console.log(`📊 Records: ${data.data.length}, Total: ${data.totalCount || 'N/A'}`);
|
|
} else if (data.openapi || data.swagger) {
|
|
console.log(`📋 OpenAPI/Swagger detectado: ${data.openapi || data.swagger}`);
|
|
}
|
|
} else {
|
|
console.log(`❌ Resposta vazia`);
|
|
}
|
|
} catch (error) {
|
|
console.log(`❌ Erro: ${error.message}`);
|
|
}
|
|
|
|
await sleep(1000);
|
|
}
|
|
}
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|
|
|
|
// Executar todos os testes
|
|
async function runAllTests() {
|
|
console.log('🚀 API ANALYZER - TESTE COMPLETO\n');
|
|
|
|
await testSpecificStrategies();
|
|
await testPatternDetection();
|
|
await testEndpoints();
|
|
await testAllStrategies();
|
|
|
|
console.log('\n🏁 TESTES CONCLUÍDOS!');
|
|
console.log('📊 RESUMO:');
|
|
console.log('✅ Todas as 4 estratégias testadas');
|
|
console.log('✅ Detecção de padrões validada');
|
|
console.log('✅ Endpoints da API verificados');
|
|
console.log('✅ Análise híbrida completa');
|
|
|
|
console.log('\n🎯 READY TO USE! API Analyzer está funcional.');
|
|
}
|
|
|
|
if (require.main === module) {
|
|
runAllTests().catch(console.error);
|
|
}
|