// Teste completo do fluxo de Reset ONU const SSHManager = require('./src/ssh/manager'); async function testCompleteResetFlow() { console.log('🧪 Teste Completo do Fluxo de Reset ONU\n'); const sshManager = new SSHManager(); // Simular callback data que seria gerado pelo bot console.log('📝 1. Simulando callback data gerado pelo bot:'); // Exemplo de como seria gerado no handleVerSinal após encontrar ONU const simulatedResult = { slot: '1/1/1', onuId: '5' }; const oltId = 'olt_dito'; const serialNumber = 'DACM91569513'; const resetCallback = `reset_onu_${oltId}_${simulatedResult.slot}_${simulatedResult.onuId}`; console.log(` Callback gerado: ${resetCallback}`); // Teste de parsing do callback console.log('\n🔍 2. Testando parsing do callback:'); const parts = resetCallback.split('_'); console.log(` Parts: ${JSON.stringify(parts)}`); let parsedOltId, parsedSlot, parsedOnuId; if (parts.length === 6) { parsedOltId = parts[2] + '_' + parts[3]; parsedSlot = parts[4]; parsedOnuId = parts[5]; } else if (parts.length === 5) { parsedOltId = parts[2]; parsedSlot = parts[3]; parsedOnuId = parts[4]; } else { parsedOnuId = parts[parts.length - 1]; parsedSlot = parts[parts.length - 2]; parsedOltId = parts.slice(2, -2).join('_'); } console.log(` ✅ Parsed - OLT: ${parsedOltId}, Slot: ${parsedSlot}, ONU: ${parsedOnuId}`); // Verificar se a OLT existe console.log('\n🏢 3. Verificando se a OLT existe:'); const equipment = sshManager.equipamentos.get(parsedOltId); if (equipment) { console.log(` ✅ OLT encontrada: ${equipment.name} (${equipment.host})`); } else { console.log(` ❌ OLT não encontrada: ${parsedOltId}`); console.log(' 📋 OLTs disponíveis:'); sshManager.listOLTs().forEach(olt => { console.log(` - ${olt.id}: ${olt.name}`); }); return; } // Gerar comando que seria executado console.log('\n💻 4. Comando que seria executado:'); const command = `config terminal && interface gpon ${parsedSlot} && onu-reset onu ${parsedOnuId} && exit`; console.log(` Comando: ${command}`); // Simular callback de confirmação console.log('\n✅ 5. Callback de confirmação:'); const confirmCallback = `confirm_reset_onu_${parsedOltId}_${parsedSlot}_${parsedOnuId}`; console.log(` Callback: ${confirmCallback}`); // Testar parsing da confirmação const confirmParts = confirmCallback.replace('confirm_reset_onu_', '').split('_'); console.log(` Parts após remoção: ${JSON.stringify(confirmParts)}`); let confirmOltId, confirmSlot, confirmOnuId; if (confirmParts.length === 4) { confirmOltId = confirmParts[0] + '_' + confirmParts[1]; confirmSlot = confirmParts[2]; confirmOnuId = confirmParts[3]; } else if (confirmParts.length === 3) { confirmOltId = confirmParts[0]; confirmSlot = confirmParts[1]; confirmOnuId = confirmParts[2]; } else { confirmOnuId = confirmParts[confirmParts.length - 1]; confirmSlot = confirmParts[confirmParts.length - 2]; confirmOltId = confirmParts.slice(0, -2).join('_'); } console.log(` ✅ Confirm Parsed - OLT: ${confirmOltId}, Slot: ${confirmSlot}, ONU: ${confirmOnuId}`); // Verificar se o método existe console.log('\n⚙️ 6. Verificando método resetOnuAlternative:'); if (typeof sshManager.resetOnuAlternative === 'function') { console.log(' ✅ Método resetOnuAlternative encontrado'); // Teste simulado (sem executar) console.log('\n🎯 7. Teste simulado do método:'); console.log(` Parâmetros: resetOnuAlternative('${confirmOltId}', '${confirmSlot}', '${confirmOnuId}')`); console.log('\n📊 8. Resultado esperado:'); console.log(' - Conexão na OLT via SSH'); console.log(' - Execução do comando de reset'); console.log(' - Retorno com status de sucesso/erro'); } else { console.log(' ❌ Método resetOnuAlternative NÃO encontrado'); } console.log('\n✅ Teste completo finalizado!'); console.log('\n🚀 Para testar no bot:'); console.log(' 1. Digite: ver sinal DACM91569513'); console.log(' 2. Selecione uma OLT'); console.log(' 3. Clique em "🔌 Reiniciar ONU"'); console.log(' 4. Confirme com "✅ SIM, Reiniciar"'); console.log(' 5. Verifique os logs no console'); } // Executar teste testCompleteResetFlow().catch(console.error);