123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- # frozen_string_literal: true
- require 'rails_helper'
- RSpec.describe Api::ErrorHandling do
- before do
- stub_const('FakeService', Class.new)
- end
- controller(Api::BaseController) do
- def failure
- FakeService.new
- end
- end
- describe 'error handling' do
- before do
- routes.draw { get 'failure' => 'api/base#failure' }
- 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|
- it "Handles error class of #{error}" do
- allow(FakeService)
- .to receive(:new)
- .and_raise(error)
- get :failure
- expect(response)
- .to have_http_status(code)
- expect(FakeService)
- .to have_received(:new)
- end
- end
- end
- end
|