This commit is contained in:
Matt Jankowski 2024-04-26 18:07:06 +00:00 committed by GitHub
commit 0eea116f16
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 20 additions and 16 deletions

View File

@ -19,21 +19,21 @@ describe Api::ErrorHandling do
end
{
ActiveRecord::RecordInvalid => 422,
ActiveRecord::RecordNotFound => 404,
ActiveRecord::RecordNotUnique => 422,
Date::Error => 422,
HTTP::Error => 503,
Mastodon::InvalidParameterError => 400,
Mastodon::NotPermittedError => 403,
Mastodon::RaceConditionError => 503,
Mastodon::RateLimitExceededError => 429,
Mastodon::UnexpectedResponseError => 503,
Mastodon::ValidationError => 422,
OpenSSL::SSL::SSLError => 503,
Seahorse::Client::NetworkingError => 503,
Stoplight::Error::RedLight => 503,
}.each do |error, code|
ActiveRecord::RecordInvalid => { code: 422, message: /invalid/i },
ActiveRecord::RecordNotFound => { code: 404, message: /record not found/i },
ActiveRecord::RecordNotUnique => { code: 422, message: /duplicate record/i },
Date::Error => { code: 422, message: /invalid date/i },
HTTP::Error => { code: 503, message: /remote data could not/i },
Mastodon::InvalidParameterError => { code: 400, message: // },
Mastodon::NotPermittedError => { code: 403, message: /action is not allowed/i },
Mastodon::RaceConditionError => { code: 503, message: /temporary problem serving/i },
Mastodon::RateLimitExceededError => { code: 429, message: /too many requests/i },
Mastodon::UnexpectedResponseError => { code: 503, message: /remote data could not/i },
Mastodon::ValidationError => { code: 422, message: /validation/i },
OpenSSL::SSL::SSLError => { code: 503, message: /ssl certificate could not/i },
Seahorse::Client::NetworkingError => { code: 503, message: /temporary problem serving/i },
Stoplight::Error::RedLight => { code: 503, message: /temporary problem serving/i },
}.each do |error, options|
it "Handles error class of #{error}" do
allow(FakeService)
.to receive(:new)
@ -42,9 +42,13 @@ describe Api::ErrorHandling do
get :failure
expect(response)
.to have_http_status(code)
.to have_http_status(options[:code])
expect(FakeService)
.to have_received(:new)
expect(body_as_json)
.to include(
error: match(options[:message])
)
end
end
end