Files
openfoodnetwork/spec/models/stripe_account_spec.rb
Rob Harrington db5503dd80 Allow destruction of StripeAccounts even if deauthorise request fails
Log deauthorise failures to Bugsnag
2017-09-23 14:58:35 +10:00

55 lines
2.0 KiB
Ruby

require 'spec_helper'
require 'stripe/oauth'
describe StripeAccount do
describe "deauthorize_and_destroy" do
let!(:enterprise) { create(:enterprise) }
let!(:enterprise2) { create(:enterprise) }
let(:client_id) { 'ca_abc123' }
let(:stripe_user_id) { 'acct_abc123' }
let!(:stripe_account) { create(:stripe_account, enterprise: enterprise, stripe_user_id: stripe_user_id) }
before do
allow(Stripe).to receive(:api_key) { "sk_test_12345" }
allow(Stripe).to receive(:client_id) { client_id }
end
context "when the Stripe API disconnect fails" do
before do
stub_request(:post, "https://connect.stripe.com/oauth/deauthorize").
with(body: { "client_id" => client_id, "stripe_user_id" => stripe_user_id }).
to_return(status: 400, body: JSON.generate(error: 'invalid_grant', error_description: "Some Message"))
end
it "destroys the record and notifies Bugsnag" do
expect(Bugsnag).to receive(:notify)
stripe_account.deauthorize_and_destroy
expect(StripeAccount.all).to_not include(stripe_account)
end
end
context "when the Stripe API disconnect succeeds" do
before do
stub_request(:post, "https://connect.stripe.com/oauth/deauthorize").
with(body: { "client_id" => client_id, "stripe_user_id" => stripe_user_id }).
to_return(status: 200, body: JSON.generate(stripe_user_id: stripe_user_id))
end
it "destroys the record" do
stripe_account.deauthorize_and_destroy
expect(StripeAccount.all).not_to include(stripe_account)
end
end
context "if the account is also associated with another Enterprise" do
let!(:another_stripe_account) { create(:stripe_account, enterprise: enterprise2, stripe_user_id: stripe_user_id) }
it "Doesn't make a Stripe API disconnection request " do
expect(Stripe::OAuth).to_not receive(:deauthorize)
stripe_account.deauthorize_and_destroy
expect(StripeAccount.all).not_to include(stripe_account)
end
end
end
end