From 3cd273d2d0ca31f1f06ac772593fbe8b32a9924b Mon Sep 17 00:00:00 2001 From: Gabriel Jablonski Date: Thu, 12 Jun 2025 12:14:54 -0300 Subject: [PATCH] chore: fix issues with specs and provider disconnect (#67) * chore: fix issues with specs and provider disconnect * test: add expects --- .../api/v1/accounts/inboxes_controller.rb | 2 ++ app/models/channel/whatsapp.rb | 2 -- .../providers/whatsapp_baileys_service.rb | 2 +- .../api/v1/accounts/inboxes_controller_spec.rb | 17 +++++++++++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v1/accounts/inboxes_controller.rb b/app/controllers/api/v1/accounts/inboxes_controller.rb index 18976f295..5b377a158 100644 --- a/app/controllers/api/v1/accounts/inboxes_controller.rb +++ b/app/controllers/api/v1/accounts/inboxes_controller.rb @@ -84,6 +84,8 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController channel.disconnect_channel_provider head :ok + ensure + channel.update_provider_connection!(connection: 'close') if channel.respond_to?(:update_provider_connection!) end def destroy diff --git a/app/models/channel/whatsapp.rb b/app/models/channel/whatsapp.rb index 7107add1f..f198a91e1 100644 --- a/app/models/channel/whatsapp.rb +++ b/app/models/channel/whatsapp.rb @@ -109,8 +109,6 @@ class Channel::Whatsapp < ApplicationRecord def disconnect_channel_provider provider_service.disconnect_channel_provider - ensure - update_provider_connection!(connection: 'close') end delegate :setup_channel_provider, to: :provider_service diff --git a/app/services/whatsapp/providers/whatsapp_baileys_service.rb b/app/services/whatsapp/providers/whatsapp_baileys_service.rb index 1826d68b1..1dea14a54 100644 --- a/app/services/whatsapp/providers/whatsapp_baileys_service.rb +++ b/app/services/whatsapp/providers/whatsapp_baileys_service.rb @@ -18,7 +18,7 @@ class Whatsapp::Providers::WhatsappBaileysService < Whatsapp::Providers::BaseSer webhookVerifyToken: whatsapp_channel.provider_config['webhook_verify_token'], # TODO: Remove on Baileys v2, default will be false includeMedia: false - }.compact_blank.to_json + }.compact.to_json ) process_response(response) diff --git a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb index b85e768d3..fb7c045e9 100644 --- a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb @@ -979,6 +979,23 @@ RSpec.describe 'Inboxes API', type: :request do as: :json expect(response).to have_http_status(:ok) + expect(channel.reload.provider_connection).to eq('connection' => 'close') + end + + it 'ensures provider connection is updated to close' do + channel.update_provider_connection!(connection: 'open') + service_double = instance_double(Whatsapp::Providers::WhatsappBaileysService, disconnect_channel_provider: true) + allow(service_double).to receive(:disconnect_channel_provider).and_raise(StandardError) + allow(Whatsapp::Providers::WhatsappBaileysService).to receive(:new) + .with(whatsapp_channel: channel) + .and_return(service_double) + + post "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}/disconnect_channel_provider", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:internal_server_error) + expect(channel.reload.provider_connection).to eq('connection' => 'close') end end end