Sha256: fdacc857298dd276a22502ca192e059e82631dd7377c5d6d43c541bc1c877790

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

require 'helper'

describe Terminal::Client do
  before do
    @client = Terminal::Client.new(:access_token => 'blah', :user_token => 'blah2')
  end

  describe 'new instance of the client is defined' do

    context 'when bad access_token,user_token are provided' do
      it 'raises a configuration exception' do
         expect { Terminal::Client.new(:access_token => 12121, :user_token => 12111111) }.to raise_exception(Terminal::APIConfigurationError)
      end
    end
    context 'when no access_token,user_token are provided' do
      it 'does not raise an exception' do
        expect { Terminal::Client.new }.not_to raise_error
      end
    end
  end

  describe 'connection' do
    it 'looks like a Faraday connection' do
      expect(@client.send(:connection)).to respond_to(:run_request)
    end
  end

  describe 'request' do
    it 'catches Faraday Timeout errors and raises an API timeout error' do
      allow(@client).to receive(:connection).and_raise(Faraday::Error::TimeoutError.new('expired'))
      expect { @client.send(:request, :post, '/blah') }.to raise_error(Terminal::APITimeoutError)
    end

    it 'raises an API error from a response containing error JSON' do
      stub_post('/path').to_return(:body => fixture('error_response.json'), :headers => {:content_type => 'application/json'})
      expect { @client.send(:request, :post, '/path') }.to raise_error { |e|
        e.should be_a(Terminal::APIResponseError)
        e.response.body[:status].should equal?('failed')
      }
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cc-terminal-0.1.2 spec/terminal/client_spec.rb