Sha256: 920add7451f566e1e022d1d8f67fc0cbb242c8e01e01cc345afb083236e03d46

Contents?: true

Size: 1.98 KB

Versions: 11

Compression:

Stored size: 1.98 KB

Contents

# frozen_string_literal: true

RSpec.describe FinAppsCore::Middleware::RaiseError do
  let(:fake_app) { proc {|env| env } }

  before do
    stub_const('Env', Struct.new(:status, :response_headers, :body))
  end

  describe '#on_complete' do
    subject(:error_raiser) { described_class.new(fake_app) }

    context 'with successful requests' do
      let(:env) { Env.new(200) }

      it { expect { error_raiser.on_complete(env) }.not_to raise_error }
    end

    context 'with invalid session errors' do
      let(:env) do
        body = '{"messages":["Invalid User Identifier or Credentials"]}'
        Env.new(401, {}, body)
      end

      error_message = 'API Invalid Session'
      it {
        expect { error_raiser.on_complete(env) }
          .to raise_error(FinAppsCore::ApiUnauthenticatedError, error_message)
      }
    end

    context 'with client errors' do
      let(:env) { Env.new(404, {}, '{"messages":["Resource Not Found"]}') }

      error_message = 'the server responded with status 404'
      it {
        expect { error_raiser.on_complete(env) }
          .to raise_error(Faraday::ClientError, error_message)
      }
    end

    context 'with connection failed error' do
      let(:env) { Env.new(407) }

      error_message = 'Connection Failed'
      it {
        expect { error_raiser.on_complete(env) }
          .to raise_error(FinAppsCore::ConnectionFailedError, error_message)
      }
    end

    context 'with session timeout error' do
      let(:env) { Env.new(419) }

      error_message = 'API Session Timed out'
      it {
        expect { error_raiser.on_complete(env) }
          .to raise_error(FinAppsCore::ApiSessionTimeoutError, error_message)
      }
    end

    context 'with user lockout error' do
      let(:env) { Env.new(403, {}, '{"messages":["Account is locked"]}') }

      error_message = 'User is Locked'
      it {
        expect { error_raiser.on_complete(env) }
          .to raise_error(FinAppsCore::UserLockoutError, error_message)
      }
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
finapps_core-6.0.2 spec/middleware/response/raise_error_spec.rb
finapps_core-6.0.1 spec/middleware/response/raise_error_spec.rb
finapps_core-6.0.0 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.16 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.15 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.14 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.13 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.11 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.10 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.9 spec/middleware/response/raise_error_spec.rb
finapps_core-5.0.8 spec/middleware/response/raise_error_spec.rb