Sha256: 3b311fa0aca7ef7c7ac8b7f10584597147f84b3df9fcd68ff01144ced49aee7d

Contents?: true

Size: 1.88 KB

Versions: 10

Compression:

Stored size: 1.88 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 doc_root
      File.expand_path(File.join(RAILS_ROOT, 'public'))
    end

    def saved_page_dir
      File.expand_path(File.join(RAILS_ROOT, "tmp"))
    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 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

10 entries across 10 versions & 7 rubygems

Version Path
honkster-webrat-0.6.0.10 lib/webrat/adapters/rails.rb
honkster-webrat-0.6.0.9 lib/webrat/adapters/rails.rb
darkofabijan-webrat-0.6.1 lib/webrat/adapters/rails.rb
kbaum-webrat-0.6.1.pre lib/webrat/adapters/rails.rb
cynergy-webrat-0.6.0 lib/webrat/adapters/rails.rb
webrat-0.6.0 lib/webrat/adapters/rails.rb
radar-webrat-0.5.1.1 lib/webrat/adapters/rails.rb
radar-webrat-0.5.1 lib/webrat/adapters/rails.rb
mkuklis-webrat-0.5.1 lib/webrat/adapters/rails.rb
honkster-webrat-0.6.0 lib/webrat/adapters/rails.rb