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)
This commit is contained in:
parent
f24b81e27f
commit
1fcdaafa6f
14 changed files with 40 additions and 39 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue