Sha256: 8d37dab5c0ca4aa5310b5e24ee6ddb1a1172d3e2c597e5d5c0fe6d88553ee784

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

require "rack/test"

module Webrat
  class RackSession
    def initialize(context) #:nodoc:
      @session = Rack::Test::Session.new(context.app, "www.example.com")
    end

    def get(url, data = {}, headers = {})
      process_request(:get, url, data, headers)
    end

    def post(url, data = {}, headers = {})
      process_request(:post, url, data, headers)
    end

    def put(url, data = {}, headers = {})
      process_request(:put, url, data, headers)
    end

    def delete(url, data = {}, headers = {})
      process_request(:delete, url, data, headers)
    end

    def response_body
      response.body
    end

    def response_code
      response.status
    end

    def response
      @session.last_response
    end

    def request
      @session.last_request
    end

  protected

    def process_request(http_method, url, data = {}, headers = {})
      headers ||= {}
      data    ||= {}

      params = data.inject({}) { |acc, (k,v)|
        acc.update(k => Rack::Utils.unescape(v))
      }

      env = headers.merge(:params => params, :method => http_method.to_s.upcase)
      @session.request(url, env)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aslakhellesoy-webrat-0.4.4.1 lib/webrat/rack.rb