Sha256: 20ef1e44e1374076545ef852aed7768e554df011cf30f3c293379447342e46c3

Contents?: true

Size: 1.78 KB

Versions: 13

Compression:

Stored size: 1.78 KB

Contents

require "webrat/integrations/rails"
require "action_controller/record_identifier"

module Webrat
  class RailsAdapter #:nodoc:
    include ActionController::RecordIdentifier

    attr_reader :integration_session

    def initialize(session)
      @integration_session = session
    end

    def get(url, data, headers = nil)
      do_request(:get, url, data, headers)
    end

    def post(url, data, headers = nil)
      do_request(:post, url, data, headers)
    end

    def put(url, data, headers = nil)
      do_request(:put, url, data, headers)
    end

    def delete(url, data, headers = nil)
      do_request(:delete, url, data, headers)
    end

    def response_body
      response.body
    end

    def response_code
      response.code.to_i
    end

    def response_headers
      response.headers
    end

    def xml_content_type?
      response.headers["Content-Type"].to_s =~ /xml/
    end

  protected

    def do_request(http_method, url, data, headers) #:nodoc:
      update_protocol(url)
      integration_session.send(http_method, normalize_url(url), data, headers)
    end

    # remove protocol, host and anchor
    def normalize_url(href) #:nodoc:
      uri = URI.parse(href)
      normalized_url = []
      normalized_url << "#{uri.scheme}://" if uri.scheme
      normalized_url << uri.host if uri.host
      normalized_url << ":#{uri.port}" if uri.port && ![80,443].include?(uri.port)
      normalized_url << uri.path if uri.path
      normalized_url << "?#{uri.query}" if uri.query
      normalized_url.join
    end

    def update_protocol(href) #:nodoc:
      if href =~ /^https:/
        integration_session.https!(true)
      elsif href =~ /^http:/
        integration_session.https!(false)
      end
    end

    def response #:nodoc:
      integration_session.response
    end
  end
end

Version data entries

13 entries across 13 versions & 7 rubygems

Version Path
radiant-1.0.0 ruby-debug/ruby/1.8/gems/webrat-0.7.3/lib/webrat/adapters/rails.rb
indirect-webrat-0.7.5 lib/webrat/adapters/rails.rb
indirect-webrat-0.7.4 lib/webrat/adapters/rails.rb
webrat-0.7.3 lib/webrat/adapters/rails.rb
jbd-webrat-0.7.2.rails3 lib/webrat/adapters/rails.rb
webrat-0.7.2 lib/webrat/adapters/rails.rb
webrat-0.7.2.beta.2 lib/webrat/adapters/rails.rb
mutle-webrat-0.7.2.beta.1 lib/webrat/adapters/rails.rb
thoughtbot-webrat-0.7.2.pre lib/webrat/adapters/rails.rb
webrat-0.7.2.beta.1 lib/webrat/adapters/rails.rb
honkster-webrat-0.7.1.2 lib/webrat/adapters/rails.rb
honkster-webrat-0.7.1.1 lib/webrat/adapters/rails.rb
webrat-0.7.1 lib/webrat/adapters/rails.rb