Sha256: 7519f075a9980cf8e444ab6106663a860849b9b4f903ec5590d4e0794b3f37ee

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

module EMHttpRequestSpecHelper

  def failed
    EventMachine.stop
    fail
  end

  def http_request(method, uri, options = {}, &block)
    response = nil
    error = nil
    uri = Addressable::URI.heuristic_parse(uri)
    EventMachine.run {
      request = EventMachine::HttpRequest.new("#{uri.omit(:userinfo).normalize.to_s}")
      http = request.send(:setup_request, method, {
        :timeout => 2, 
        :body => options[:body],
        :query => options[:query],
        'authorization' => [uri.user, uri.password],
        :head => options[:headers]}, &block)
      http.errback {
        error = http.errors         
        failed 
      }
      headers = {}
      if http.response_header
        http.response_header.each do |k,v|
          v = v.join(", ") if v.is_a?(Array)
          headers[k] = v 
        end
      end
      http.callback {
        response = OpenStruct.new({
          :body => http.response,
          :headers => WebMock::Util::Headers.normalize_headers(headers),          
          :message => http.response_header.http_reason,
          :status => http.response_header.status.to_s
        })
        EventMachine.stop
      }
    }
    raise error if error
    response
  end

  def client_timeout_exception_class
    "WebMock timeout error"
  end

  def connection_refused_exception_class
    ""
  end

  def default_client_request_headers(request_method = nil, has_body = false)
    nil
  end

  def setup_expectations_for_real_request(options = {})
  end

  def http_library
    :em_http_request
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
webmock-1.3.0 spec/em_http_request_spec_helper.rb