chatwoot-develop/local_test_wuzapi.rb

57 lines
2.0 KiB
Ruby

# 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