From ad308c4f111e9dc5fa07be812a892702132a12bc Mon Sep 17 00:00:00 2001 From: Rodrigo Borba Date: Sat, 3 Jan 2026 17:41:06 -0300 Subject: [PATCH] =?UTF-8?q?test:=20adiciona=20script=20local=20para=20simu?= =?UTF-8?q?lar=20e=20testar=20a=20configura=C3=A7=C3=A3o=20de=20webhook=20?= =?UTF-8?q?do=20Wuzapi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- local_test_wuzapi.rb | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 local_test_wuzapi.rb diff --git a/local_test_wuzapi.rb b/local_test_wuzapi.rb new file mode 100644 index 0000000..d492419 --- /dev/null +++ b/local_test_wuzapi.rb @@ -0,0 +1,56 @@ +# local_test_wuzapi.rb + +# 1. Mock do Client para não fazer requisição real, apenas imprimir o que seria enviado +module Wuzapi + class Client + def request(method, path, payload, headers) + puts "\n--- [SIMULAÇÃO DE ENVIO] ---" + puts "Method: #{method.upcase}" + puts "Path: #{path}" + puts "Payload: #{JSON.pretty_generate(payload)}" + puts "Headers: #{headers}" + puts "--------------------------\n" + + # Retorna falso sucesso só para o script continuar + { 'success' => true } + end + end +end + +# 2. Setup do cenário +# Precisamos de um Channel::Whatsapp e Inbox para o teste +# Se não existir, criamos em memória (mas o find precisa achar) + +puts 'Procurando uma Inbox de Whatsapp para teste...' +inbox = Inbox.where(channel_type: 'Channel::Whatsapp').last + +unless inbox + puts 'Nenhuma inbox de Whatsapp encontrada no banco local.' + puts 'Criando uma em memória para teste...' + + # Mockando comportamentos necessários se não tiver banco real + account = Account.first || Account.create!(name: 'Test Account') + channel = Channel::Whatsapp.new(phone_number: '+5511999999999', account: account) + channel.save!(validate: false) + inbox = Inbox.create!(channel: channel, account: account, name: 'Test Inbox') +end + +puts "Usando Inbox ##{inbox.id} com telefone #{inbox.channel.phone_number}" + +# 3. Executando o teste +puts "\nTestando Wuzapi::ProvisioningService..." + +# Instancia o serviço com URL fake +service = Wuzapi::ProvisioningService.new('http://api.wuzapi.test', 'admin_token') + +# Executa setup_webhook +# Isso deve chamar o nosso Client mockado e imprimir o payload com os eventos corretos e a URL certa +begin + service.setup_webhook('user_token_123', inbox.id, 'webhook_secret_abc') + puts "\n[SUCESSO] Teste concluído. Verifique se o Payload acima contém:" + puts "1. 'events' => ['Message', 'ReadReceipt', ...]" + puts "2. 'webhook' => '.../webhooks/whatsapp/#{inbox.channel.phone_number.delete('+')}'" +rescue StandardError => e + puts "\n[ERRO] Ocorreu um erro durante o teste: #{e.message}" + puts e.backtrace +end