Sha256: 005a685d30822878ac6c1ef228954cac4d9991eb3a74b92db63f0c5f70b32420

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require 'spec_helper'
require 'commute/common/typhoeus'

describe Commute::Common::Typhoeus do

  let(:adapter) { Commute::Common::Typhoeus.new }

  let(:router) { Commute::Stack::Router.new [adapter].each }

  before do
    @stub = stub_request(:post, "http://www.example.com/").with \
      headers: {
        'User-Agent' => 'Typhoeus - https://github.com/typhoeus/typhoeus'
      },
      body: 'Hello World!'
  end

  it 'should be able to make a successful request' do
    # Stub the request.
    @stub.to_return(status: 200, body: 'Hello!', headers: {})

    # Create a Http Request.
    http_request = Commute::Http::Request.new(nil).tap do |r|
      r.uri = URI('http://www.example.com')
      r.method = :post
    end

    # Execute the request.
    response, body, status = nil, [], nil
    request = router.call http_request do |_response, _status|
      _response >> body
      response, status = _response, _status
    end
    request.write 'Hello'
    request.write ' World!'
    request.end

    # Do some checks.
    status.success?.must_equal true
    body.join.must_equal 'Hello!'
  end

  it 'should be able to handle a bad response' do
    # Stub the request.
    @stub.to_return(status: 500, headers: {})

    # Create a Http Request.
    http_request = Commute::Http::Request.new(nil).tap do |r|
      r.uri = URI('http://www.example.com')
      r.method = :post
    end

    # Execute the request.
    response, body, status = nil, [], nil
    request = router.call http_request do |_response, _status|
      _response >> body
      response, status = _response, _status
    end
    request.write 'Hello'
    request.write ' World!'
    request.end

    # Do some checks.
    status.fail?.must_equal true
    body.must_be_empty
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
commute-0.3.0.pre.2 spec/commute/common/typhoeus_spec.rb
commute-0.3.0.pre spec/commute/common/typhoeus_spec.rb