Parent

Class/Module Index [+]

Quicksearch

ActionController::Integration::Session

An integration Session instance represents a set of requests and responses performed sequentially by some virtual user. Because you can instantiate multiple sessions and run them side-by-side, you can also mimic (to some limited extent) multiple simultaneous users interacting with your system.

Typically, you will instantiate a new session using IntegrationTest#open_session, rather than instantiating Integration::Session directly.

Attributes

accept[RW]

The Accept header to send.

application[RW]

Rack application to use

body[R]

The body of the last request.

controller[R]

A reference to the controller instance used by the last request.

cookies[R]

A map of the cookies returned by the last response, and which will be sent with the next request.

headers[R]

A map of the headers returned by the last response.

host[RW]

The hostname used in the last request.

path[R]

The URI of the last request.

remote_addr[RW]

The remote_addr used in the last request.

request[R]

A reference to the request instance used by the last request.

request_count[RW]

A running counter of the number of requests processed.

response[R]

A reference to the response instance used by the last request.

status[R]

The integer HTTP status code of the last request.

status_message[R]

The status message that accompanied the status code of the last request.

Public Class Methods

new(app = nil) click to toggle source

Create and initialize a new Session instance.

# File lib/action_controller/integration.rb, line 68
def initialize(app = nil)
  @application = app || ActionController::Dispatcher.new
  reset!
end

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_controller/integration.rb, line 214
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_controller/integration.rb, line 167
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_controller/integration.rb, line 131
def follow_redirect!
  raise "not a redirect! #{@status} #{@status_message}" unless redirect?
  get(interpret_uri(headers['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 HTTP headers to pass, as a Hash. The keys will automatically be upcased, with the prefix 'HTTP_' added if needed.

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 ActionController::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_controller/integration.rb, line 196
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_controller/integration.rb, line 149
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_controller/integration.rb, line 220
def head(path, parameters = nil, headers = nil)
  process :head, path, parameters, headers
end
host!(name) click to toggle source

Set the host name to use in the next request.

session.host! "www.example.com"
# File lib/action_controller/integration.rb, line 124
def host!(name)
  @host = name
end
https!(flag = true) click to toggle source

Specify whether or not the session should mimic a secure HTTPS request.

session.https!
session.https!(false)
# File lib/action_controller/integration.rb, line 108
def https!(flag = true)
  @https = flag
end
https?() click to toggle source

Return true if the session is mimicking a secure HTTPS request.

if session.https?
  ...
end
# File lib/action_controller/integration.rb, line 117
def https?
  @https
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_controller/integration.rb, line 202
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_controller/integration.rb, line 155
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_controller/integration.rb, line 208
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_controller/integration.rb, line 161
def put_via_redirect(path, parameters = nil, headers = nil)
  request_via_redirect(:put, path, parameters, headers)
end
redirect?() click to toggle source

Returns true if the last response was a redirect.

# File lib/action_controller/integration.rb, line 172
def redirect?
  status/100 == 3
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_controller/integration.rb, line 141
def request_via_redirect(http_method, path, parameters = nil, headers = nil)
  send(http_method, path, parameters, headers)
  follow_redirect! while redirect?
  status
end
reset!() click to toggle source

Resets the instance. This can be used to reset the state information in an existing session instance, so it can be used from a clean-slate condition.

session.reset!
# File lib/action_controller/integration.rb, line 78
def reset!
  @status = @path = @headers = nil
  @result = @status_message = nil
  @https = false
  @cookies = {}
  @controller = @request = @response = nil
  @request_count = 0

  self.host        = "www.example.com"
  self.remote_addr = "127.0.0.1"
  self.accept      = "text/xml,application/xml,application/xhtml+xml," +
                     "text/html;q=0.9,text/plain;q=0.8,image/png," +
                     "*/*;q=0.5"

  unless defined? @named_routes_configured
    # install the named routes in this session instance.
    klass = class << self; self; end
    Routing::Routes.install_helpers(klass)

    # the helpers are made protected by default--we make them public for
    # easier access during testing and troubleshooting.
    klass.module_eval { public *Routing::Routes.named_routes.helpers }
    @named_routes_configured = true
  end
end
url_for(options) click to toggle source

Returns the URL for the given options, according to the rules specified in the application’s routes.

# File lib/action_controller/integration.rb, line 241
def url_for(options)
  controller ?
    controller.url_for(options) :
    generic_url_rewriter.rewrite(options)
end
xhr(request_method, path, parameters = nil, headers = nil) click to toggle source
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. Keys are automatically upcased and prefixed with ‘HTTP_’ if not already.

# File lib/action_controller/integration.rb, line 231
def xml_http_request(request_method, path, parameters = nil, headers = nil)
  headers ||= {}
  headers['X-Requested-With'] = 'XMLHttpRequest'
  headers['Accept'] ||= [Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ')
  process(request_method, path, parameters, headers)
end
Also aliased as: xhr

[Validate]

Generated with the Darkfish Rdoc Generator 2.