Files
rodrigonet/test-complete-reset-flow.js
T
2025-08-08 10:22:27 -03:00

121 lines
4.7 KiB
JavaScript

// 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);