Module: ActionDispatch::Integration::RequestHelpers

Included in:
Session
Defined in:
lib/action_dispatch/testing/integration.rb

Instance Method Summary collapse

Instance Method Details

#delete(path, parameters = nil, headers = nil) ⇒ Object

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



50
51
52
# 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) ⇒ Object

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



113
114
115
# 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!Object

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.



77
78
79
80
81
# 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) ⇒ Object

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.



32
33
34
# 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) ⇒ Object

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



95
96
97
# 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) ⇒ Object

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



56
57
58
# 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) ⇒ Object

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



38
39
40
# 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) ⇒ Object

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



101
102
103
# 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) ⇒ Object

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



44
45
46
# 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) ⇒ Object

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



107
108
109
# 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) ⇒ Object

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.



87
88
89
90
91
# 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

#xml_http_request(request_method, path, parameters = nil, headers = nil) ⇒ Object Also known as: xhr

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.



66
67
68
69
70
71
# 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