feat: Enable reauthorization for Facebook (#1286)

This commit is contained in:
Sojan Jose
2020-09-30 01:12:32 +05:30
committed by GitHub
parent 99ca54fd3c
commit b862817b29
20 changed files with 281 additions and 15 deletions

View File

@@ -114,6 +114,7 @@ RSpec.describe 'Callbacks API', type: :request do
as: :json
expect(response).to have_http_status(:success)
expect(response.body).to include(inbox.id.to_s)
end
it 'returns unprocessable_entity if no page found' do

View File

@@ -1,6 +1,7 @@
# frozen_string_literal: true
require 'rails_helper'
require Rails.root.join 'spec/models/concerns/reauthorizable_spec.rb'
RSpec.describe Channel::FacebookPage do
let(:channel) { create(:channel_facebook_page) }
@@ -10,6 +11,10 @@ RSpec.describe Channel::FacebookPage do
it { is_expected.to belong_to(:account) }
it { is_expected.to have_one(:inbox).dependent(:destroy) }
describe 'concerns' do
it_behaves_like 'reauthorizable'
end
it 'has a valid name' do
expect(channel.name).to eq('Facebook')
end

View File

@@ -0,0 +1,38 @@
require 'rails_helper'
shared_examples_for 'reauthorizable' do
let(:model) { described_class } # the class that includes the concern
it 'authorization_error!' do
obj = FactoryBot.create(model.to_s.underscore.tr('/', '_').to_sym)
expect(obj.authorization_error_count).to eq 0
obj.authorization_error!
expect(obj.authorization_error_count).to eq 1
end
it 'prompt_reauthorization!' do
obj = FactoryBot.create(model.to_s.underscore.tr('/', '_').to_sym)
expect(obj.reauthorization_required?).to eq false
obj.prompt_reauthorization!
expect(obj.reauthorization_required?).to eq true
end
it 'reauthorized!' do
obj = FactoryBot.create(model.to_s.underscore.tr('/', '_').to_sym)
# setting up the object with the errors to validate its cleared on action
obj.authorization_error!
obj.prompt_reauthorization!
expect(obj.reauthorization_required?).to eq true
expect(obj.authorization_error_count).not_to eq 0
obj.reauthorized!
# authorization errors are reset
expect(obj.authorization_error_count).to eq 0
expect(obj.reauthorization_required?).to eq false
end
end

View File

@@ -5,7 +5,7 @@ describe Facebook::SendOnFacebookService do
before do
allow(Facebook::Messenger::Subscriptions).to receive(:subscribe).and_return(true)
allow(bot).to receive(:deliver)
allow(bot).to receive(:deliver).and_return({ recipient_id: '1008372609250235', message_id: 'mid.1456970487936:c34767dfe57ee6e339' }.to_json)
create(:message, message_type: :incoming, inbox: facebook_inbox, account: account, conversation: conversation)
end