Skip to content

Commit

Permalink
chore: Rescue Oauth2::Error and mark the channel as inactive (#9358)
Browse files Browse the repository at this point in the history
Co-authored-by: Sojan <sojan@pepalo.com>
  • Loading branch information
pranavrajs and sojan-official committed May 7, 2024
1 parent 892e1fd commit de044e2
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
3 changes: 3 additions & 0 deletions app/jobs/inboxes/fetch_imap_emails_job.rb
Expand Up @@ -36,6 +36,9 @@ def process_email_for_channel(channel, interval)
inbound_emails.map do |inbound_mail|
process_mail(inbound_mail, channel)
end
rescue OAuth2::Error => e
Rails.logger.error "Error for email channel - #{channel.inbox.id} : #{e.message}"
channel.authorization_error!
end

def process_mail(inbound_mail, channel)
Expand Down
18 changes: 18 additions & 0 deletions spec/jobs/inboxes/fetch_imap_emails_job_spec.rb
Expand Up @@ -69,6 +69,24 @@
end
end

context 'when IMAP OAuth errors out' do
it 'marks the connection as requiring authorization' do
error_response = double
oauth_error = OAuth2::Error.new(error_response)

allow(Imap::MicrosoftFetchEmailService).to receive(:new)
.with(channel: microsoft_imap_email_channel, interval: 1)
.and_raise(oauth_error)

allow(Redis::Alfred).to receive(:incr)

expect(Redis::Alfred).to receive(:incr)
.with("AUTHORIZATION_ERROR_COUNT:channel_email:#{microsoft_imap_email_channel.id}")

described_class.perform_now(microsoft_imap_email_channel)
end
end

context 'when the fetch service returns the email objects' do
let(:inbound_mail) { create_inbound_email_from_fixture('welcome.eml').mail }
let(:mailbox) { double }
Expand Down

0 comments on commit de044e2

Please sign in to comment.