diff --git a/app/services/telegram/incoming_message_service.rb b/app/services/telegram/incoming_message_service.rb index 7b0c9faec..d4eeb53d5 100644 --- a/app/services/telegram/incoming_message_service.rb +++ b/app/services/telegram/incoming_message_service.rb @@ -100,6 +100,12 @@ class Telegram::IncomingMessageService def attach_files return unless file + file_download_path = inbox.channel.get_telegram_file_path(file[:file_id]) + if file_download_path.blank? + Rails.logger.info "Telegram file download path is blank for #{file[:file_id]} : inbox_id: #{inbox.id}" + return + end + attachment_file = Down.download( inbox.channel.get_telegram_file_path(file[:file_id]) ) diff --git a/spec/services/telegram/incoming_message_service_spec.rb b/spec/services/telegram/incoming_message_service_spec.rb index d82862cd6..c169f33fc 100644 --- a/spec/services/telegram/incoming_message_service_spec.rb +++ b/spec/services/telegram/incoming_message_service_spec.rb @@ -215,6 +215,26 @@ describe Telegram::IncomingMessageService do end end + context 'when the API call to get the download path returns an error' do + it 'does not process the attachment' do + allow(telegram_channel.inbox.channel).to receive(:get_telegram_file_path).and_return(nil) + params = { + 'update_id' => 2_342_342_343_242, + 'message' => { + 'document' => { + 'file_id' => 'AwADBAADbXXXXXXXXXXXGBdhD2l6_XX', + 'file_name' => 'Screenshot 2021-09-27 at 2.01.14 PM.png', + 'mime_type' => 'application/png', + 'file_size' => 536_392 + } + }.merge(message_params) + }.with_indifferent_access + + described_class.new(inbox: telegram_channel.inbox, params: params).perform + expect(telegram_channel.inbox.messages.first.attachments.count).to eq(0) + end + end + context 'when valid location message params' do it 'creates appropriate conversations, message and contacts' do params = {