Class: Rack::Test::Session

### Home Classes Methods

### In Files

- lib/rack/test.rb

### Parent

Object

### Methods

- ::new
- #authorize
- #basic_authorize
- #delete
- #digest_authorize
- #env
- #follow_redirect!
- #get
- #head
- #header
- #options
- #patch
- #post
- #put
- #request

### Files

- MIT-LICENSE.txt
- README.rdoc

### Class/Module Index

Quicksearch

- Rack
- Rack::Test
- Rack::Test::Error
- Rack::Test::Methods
- Rack::Test::Session
- Rack::Test::UploadedFile

No matching classes.

# Rack::Test::Session

This class represents a series of requests issued to a Rack app, sharing a single cookie jar

Rack::Test::Session's methods are most often called through Rack::Test::Methods, which will automatically build a session when it's first used.

### Public Class Methods

new(mock_session) click to toggle source

Creates a Rack::Test::Session for a given Rack app or Rack::MockSession.

Note: Generally, you won't need to initialize a Rack::Test::Session directly. Instead, you should include Rack::Test::Methods into your testing context. (See README.rdoc for an example)

    # File lib/rack/test.rb, line 36
    def initialize(mock_session)
      @headers = {}
      @env = {}

      if mock_session.is_a?(MockSession)
        @rack_mock_session = mock_session
      else
        @rack_mock_session = MockSession.new(mock_session)
      end

      @default_host = @rack_mock_session.default_host
    end

### Public Instance Methods

authorize(username, password) click to toggle source
Alias for: basic_authorize
basic_authorize(username, password) click to toggle source

Set the username and password for HTTP Basic authorization, to be included in subsequent requests in the HTTP_AUTHORIZATION header.

Example:

    basic_authorize "bryan", "secret"

    # File lib/rack/test.rb, line 161
    def basic_authorize(username, password)
      encoded_login = ["#{username}:#{password}"].pack("m*")
      header('Authorization', "Basic #{encoded_login}")
    end

Also aliased as: authorize
delete(uri, params = {}, env = {}, &block) click to toggle source

Issue a DELETE request for the given URI. See get

Example:

    delete "/"

    # File lib/rack/test.rb, line 92
    def delete(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "DELETE", :params => params))
      process_request(uri, env, &block)
    end

digest_authorize(username, password) click to toggle source

Set the username and password for HTTP Digest authorization, to be included in subsequent requests in the HTTP_AUTHORIZATION header.

Example:

    digest_authorize "bryan", "secret"

    # File lib/rack/test.rb, line 173
    def digest_authorize(username, password)
      @digest_username = username
      @digest_password = password
    end

env(name, value) click to toggle source

Set an env var to be included on all subsequent requests through the session. Use a value of nil to remove a previously configured env.

Example:

    env "rack.session", {:csrf => 'token'}

    # File lib/rack/test.rb, line 148
    def env(name, value)
      if value.nil?
        @env.delete(name)
      else
        @env[name] = value
      end
    end

follow_redirect!() click to toggle source

Rack::Test will not follow any redirects automatically. This method will follow the redirect returned (including setting the Referer header on the new request) in the last response. If the last response was not a redirect, an error will be raised.

    # File lib/rack/test.rb, line 182
    def follow_redirect!
      unless last_response.redirect?
        raise Error.new("Last response was not a redirect. Cannot follow_redirect!")
      end

      get(last_response["Location"], {}, { "HTTP_REFERER" => last_request.url })
    end

get(uri, params = {}, env = {}, &block) click to toggle source

Issue a GET request for the given URI with the given params and Rack environment. Stores the issues request object in last_request and the app's response in last_response. Yield last_response to a block if given.

Example:

    get "/"

    # File lib/rack/test.rb, line 56
    def get(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "GET", :params => params))
      process_request(uri, env, &block)
    end

head(uri, params = {}, env = {}, &block) click to toggle source

Issue a HEAD request for the given URI. See get

Example:

    head "/"

    # File lib/rack/test.rb, line 110
    def head(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "HEAD", :params => params))
      process_request(uri, env, &block)
    end

header(name, value) click to toggle source

Set a header to be included on all subsequent requests through the session. Use a value of nil to remove a previously configured header.

In accordance with the Rack spec, headers will be included in the Rack environment hash in HTTP_USER_AGENT form.

Example:

    header "User-Agent", "Firefox"

    # File lib/rack/test.rb, line 135
    def header(name, value)
      if value.nil?
        @headers.delete(name)
      else
        @headers[name] = value
      end
    end

options(uri, params = {}, env = {}, &block) click to toggle source

Issue an OPTIONS request for the given URI. See get

Example:

    options "/"

    # File lib/rack/test.rb, line 101
    def options(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "OPTIONS", :params => params))
      process_request(uri, env, &block)
    end

patch(uri, params = {}, env = {}, &block) click to toggle source

Issue a PATCH request for the given URI. See get

Example:

    patch "/"

    # File lib/rack/test.rb, line 83
    def patch(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "PATCH", :params => params))
      process_request(uri, env, &block)
    end

post(uri, params = {}, env = {}, &block) click to toggle source

Issue a POST request for the given URI. See get

Example:

    post "/signup", "name" => "Bryan"

    # File lib/rack/test.rb, line 65
    def post(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "POST", :params => params))
      process_request(uri, env, &block)
    end

put(uri, params = {}, env = {}, &block) click to toggle source

Issue a PUT request for the given URI. See get

Example:

    put "/"

    # File lib/rack/test.rb, line 74
    def put(uri, params = {}, env = {}, &block)
      env = env_for(uri, env.merge(:method => "PUT", :params => params))
      process_request(uri, env, &block)
    end

request(uri, env = {}, &block) click to toggle source

Issue a request to the Rack app for the given URI and optional Rack environment. Stores the issues request object in last_request and the app's response in last_response. Yield last_response to a block if given.

Example:

    request "/"

    # File lib/rack/test.rb, line 122
    def request(uri, env = {}, &block)
      env = env_for(uri, env)
      process_request(uri, env, &block)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.