From 1fcdaafa6fbe6d746a096c33263d76e6819da46d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 20 Jul 2017 01:59:07 +0200 Subject: Fix webfinger retries (#4275) * Do not raise unretryable exceptions in ResolveRemoteAccountService * Removed fatal exceptions from ResolveRemoteAccountService Exceptions that cannot be retried should not be raised. New exception class for those that can be retried (Mastodon::UnexpectedResponseError) --- spec/controllers/api/base_controller_spec.rb | 2 +- spec/services/resolve_remote_account_service_spec.rb | 6 +++--- spec/services/subscribe_service_spec.rb | 4 ++-- spec/workers/pubsubhubbub/delivery_worker_spec.rb | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'spec') diff --git a/spec/controllers/api/base_controller_spec.rb b/spec/controllers/api/base_controller_spec.rb index 7d5e0116c..0c7ca8990 100644 --- a/spec/controllers/api/base_controller_spec.rb +++ b/spec/controllers/api/base_controller_spec.rb @@ -32,7 +32,7 @@ describe Api::BaseController do ActiveRecord::RecordInvalid => 422, Mastodon::ValidationError => 422, ActiveRecord::RecordNotFound => 404, - Goldfinger::Error => 422, + Mastodon::UnexpectedResponseError => 503, HTTP::Error => 503, OpenSSL::SSL::SSLError => 503, Mastodon::NotPermittedError => 403, diff --git a/spec/services/resolve_remote_account_service_spec.rb b/spec/services/resolve_remote_account_service_spec.rb index c51588210..ab5d3c6e5 100644 --- a/spec/services/resolve_remote_account_service_spec.rb +++ b/spec/services/resolve_remote_account_service_spec.rb @@ -22,11 +22,11 @@ RSpec.describe ResolveRemoteAccountService do end it 'raises error if no such user can be resolved via webfinger' do - expect { subject.call('catsrgr8@quitter.no') }.to raise_error Goldfinger::Error + expect(subject.call('catsrgr8@quitter.no')).to be_nil end it 'raises error if the domain does not have webfinger' do - expect { subject.call('catsrgr8@example.com') }.to raise_error Goldfinger::Error + expect(subject.call('catsrgr8@example.com')).to be_nil end it 'returns an already existing remote account' do @@ -58,7 +58,7 @@ RSpec.describe ResolveRemoteAccountService do end it 'prevents hijacking inexisting accounts' do - expect { subject.call('hacker2@redirected.com') }.to raise_error Goldfinger::Error + expect(subject.call('hacker2@redirected.com')).to be_nil end it 'returns a new remote account' do diff --git a/spec/services/subscribe_service_spec.rb b/spec/services/subscribe_service_spec.rb index 5db91ad99..835be5ec5 100644 --- a/spec/services/subscribe_service_spec.rb +++ b/spec/services/subscribe_service_spec.rb @@ -33,11 +33,11 @@ RSpec.describe SubscribeService do it 'fails loudly if PuSH hub is unavailable' do stub_request(:post, 'http://hub.example.com/').to_return(status: 503) - expect { subject.call(account) }.to raise_error(/Subscription attempt failed/) + expect { subject.call(account) }.to raise_error Mastodon::UnexpectedResponseError end it 'fails loudly if rate limited' do stub_request(:post, 'http://hub.example.com/').to_return(status: 429) - expect { subject.call(account) }.to raise_error(/Subscription attempt failed/) + expect { subject.call(account) }.to raise_error Mastodon::UnexpectedResponseError end end diff --git a/spec/workers/pubsubhubbub/delivery_worker_spec.rb b/spec/workers/pubsubhubbub/delivery_worker_spec.rb index a83245786..b72001568 100644 --- a/spec/workers/pubsubhubbub/delivery_worker_spec.rb +++ b/spec/workers/pubsubhubbub/delivery_worker_spec.rb @@ -26,7 +26,7 @@ describe Pubsubhubbub::DeliveryWorker do subscription = Fabricate(:subscription) stub_request_to_respond_with(subscription, 500) - expect { subject.perform(subscription.id, payload) }.to raise_error(/Delivery failed/) + expect { subject.perform(subscription.id, payload) }.to raise_error Mastodon::UnexpectedResponseError end it 'updates subscriptions when delivery succeeds' do -- cgit