Sha256: b5e89b0e1ffcfec2b3c069308c1db69061161fe76210eb2f40fd2ba983b62bbe

Contents?: true

Size: 1.92 KB

Versions: 4

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'
require 'rack/utils'

RSpec.describe RockRMS::Error do
  let(:client) do
    RockRMS::Client.new(
      url: 'http://some-rock-uri.com',
      username: 'test',
      password: 'test',
      logger: false
    )
  end

  CODES = Rack::Utils::HTTP_STATUS_CODES.keys.freeze

  def stub(code, body)
    stub_request(:any, /rock/).to_return(status: code, body: body)
  end

  def expect_failure(code, body)
    url = 'http://some-rock-uri.com/api/Auth/Login'

    expect {
      client.get('anything')
    }.to raise_error(RockRMS::Error, /#{code}: #{url} #{body}/)
  end

  def expect_success
    expect { client.get('anything') }.to_not raise_error
  end

  context 'informational responses' do
    CODES.grep(100..199).each do |code|
      it "does not raise error for #{code}" do
        stub(code, '{}')
        expect_success
      end
    end
  end

  context 'success responses' do
    CODES.grep(200..299).each do |code|
      it "does not raise error for #{code}" do
        stub(code, '{}')
        expect_success
      end
    end
  end

  context 'redirection responses' do
    CODES.grep(300..399).each do |code|
      it "does not raise error for #{code}" do
        stub(code, '')
        expect_success
      end
    end
  end

  context 'client error responses' do
    CODES.grep(400..499).each do |code|
      it "raises exception for #{code}" do
        stub(code, 'test client error')
        expect_failure(code, 'test client error')
      end
    end
  end

  context 'server error responses' do
    CODES.grep(500..599).each do |code|
      it "raises exception for #{code}" do
        stub(code, 'test client error')
        expect_failure(code, 'test client error')
      end
    end
  end

  context 'html error responses' do
    it 'raises exception for html error' do
      body = File.read('spec/rock_rms/fixtures/html_error.html')
      stub(200, body)
      expect_failure(500, 'Unknown API error.')
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rock_rms-9.4.0 spec/rock_rms/error_spec.rb
rock_rms-9.3.0 spec/rock_rms/error_spec.rb
rock_rms-9.2.0 spec/rock_rms/error_spec.rb
rock_rms-9.1.0 spec/rock_rms/error_spec.rb