# module ActionDispatch::Integration::RequestHelpers

### Public Instance Methods

delete(path, parameters = nil, headers = nil) click to toggle source

Performs a DELETE request with the given parameters. See `#get` for more details.

    # File lib/action_dispatch/testing/integration.rb, line 50
    def delete(path, parameters = nil, headers = nil)
      process :delete, path, parameters, headers
    end

delete_via_redirect(path, parameters = nil, headers = nil) click to toggle source

Performs a DELETE request, following any subsequent redirect. See `request_via_redirect` for more information.

    # File lib/action_dispatch/testing/integration.rb, line 113
    def delete_via_redirect(path, parameters = nil, headers = nil)
      request_via_redirect(:delete, path, parameters, headers)
    end

follow_redirect!() click to toggle source

Follow a single redirect response. If the last response was not a redirect, an exception will be raised. Otherwise, the redirect is performed on the location header.

    # File lib/action_dispatch/testing/integration.rb, line 77
    def follow_redirect!
      raise "not a redirect! #{status} #{status_message}" unless redirect?
      get(response.location)
      status
    end

get(path, parameters = nil, headers = nil) click to toggle source

Performs a GET request with the given parameters.

- `path`: The URI (as a String) on which you want to perform a GET request.

- `parameters`: The HTTP parameters that you want to pass. This may be `nil`, a Hash, or a String that is appropriately encoded (`application/x-www-form-urlencoded` or `multipart/form-data`).

- `headers`: Additional headers to pass, as a Hash. The headers will be merged into the Rack env hash.

This method returns an Response object, which one can use to inspect the details of the response. Furthermore, if this method was called from an ActionDispatch::IntegrationTest object, then that object’s `@response` instance variable will point to the same response object.

You can also perform POST, PUT, DELETE, and HEAD requests with `#post`, `#put`, `#delete`, and `#head`.

    # File lib/action_dispatch/testing/integration.rb, line 32
    def get(path, parameters = nil, headers = nil)
      process :get, path, parameters, headers
    end

get_via_redirect(path, parameters = nil, headers = nil) click to toggle source

Performs a GET request, following any subsequent redirect. See `request_via_redirect` for more information.

    # File lib/action_dispatch/testing/integration.rb, line 95
    def get_via_redirect(path, parameters = nil, headers = nil)
      request_via_redirect(:get, path, parameters, headers)
    end

head(path, parameters = nil, headers = nil) click to toggle source

Performs a HEAD request with the given parameters. See `#get` for more details.

    # File lib/action_dispatch/testing/integration.rb, line 56
    def head(path, parameters = nil, headers = nil)
      process :head, path, parameters, headers
    end

post(path, parameters = nil, headers = nil) click to toggle source

Performs a POST request with the given parameters. See `#get` for more details.

    # File lib/action_dispatch/testing/integration.rb, line 38
    def post(path, parameters = nil, headers = nil)
      process :post, path, parameters, headers
    end

post_via_redirect(path, parameters = nil, headers = nil) click to toggle source

Performs a POST request, following any subsequent redirect. See `request_via_redirect` for more information.

    # File lib/action_dispatch/testing/integration.rb, line 101
    def post_via_redirect(path, parameters = nil, headers = nil)
      request_via_redirect(:post, path, parameters, headers)
    end

put(path, parameters = nil, headers = nil) click to toggle source

Performs a PUT request with the given parameters. See `#get` for more details.

    # File lib/action_dispatch/testing/integration.rb, line 44
    def put(path, parameters = nil, headers = nil)
      process :put, path, parameters, headers
    end

put_via_redirect(path, parameters = nil, headers = nil) click to toggle source

Performs a PUT request, following any subsequent redirect. See `request_via_redirect` for more information.

    # File lib/action_dispatch/testing/integration.rb, line 107
    def put_via_redirect(path, parameters = nil, headers = nil)
      request_via_redirect(:put, path, parameters, headers)
    end

request_via_redirect(http_method, path, parameters = nil, headers = nil) click to toggle source

Performs a request using the specified method, following any subsequent redirect. Note that the redirects are followed until the response is not a redirect–this means you may run into an infinite loop if your redirect loops back to itself.

    # File lib/action_dispatch/testing/integration.rb, line 87
    def request_via_redirect(http_method, path, parameters = nil, headers = nil)
      process(http_method, path, parameters, headers)
      follow_redirect! while redirect?
      status
    end

xhr(request_method, path, parameters = nil, headers = nil)
Alias for: xml_http_request
xml_http_request(request_method, path, parameters = nil, headers = nil) click to toggle source

Performs an XMLHttpRequest request with the given parameters, mirroring a request from the Prototype library.

The request_method is `:get`, `:post`, `:put`, `:delete` or `:head`; the parameters are `nil`, a hash, or a url-encoded or multipart string; the headers are a hash.

    # File lib/action_dispatch/testing/integration.rb, line 66
    def xml_http_request(request_method, path, parameters = nil, headers = nil)
      headers ||= {}
      headers['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
      headers['HTTP_ACCEPT'] ||= [Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ')
      process(request_method, path, parameters, headers)
    end

Also aliased as: xhr