Class: Rack::Test::Session
- Inherits:
-
Object
- Object
- Rack::Test::Session
- Extended by:
- Forwardable
- Includes:
- Utils
- Defined in:
- lib/rack/test.rb
Overview
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.
Instance Method Summary collapse
-
#basic_authorize(username, password) ⇒ Object
(also: #authorize)
Set the username and password for HTTP Basic authorization, to be included in subsequent requests in the HTTP_AUTHORIZATION header.
-
#delete(uri, params = {}, env = {}, &block) ⇒ Object
Issue a DELETE request for the given URI.
-
#digest_authorize(username, password) ⇒ Object
Set the username and password for HTTP Digest authorization, to be included in subsequent requests in the HTTP_AUTHORIZATION header.
-
#follow_redirect! ⇒ Object
Rack::Test will not follow any redirects automatically.
-
#get(uri, params = {}, env = {}, &block) ⇒ Object
Issue a GET request for the given URI with the given params and Rack environment.
-
#head(uri, params = {}, env = {}, &block) ⇒ Object
Issue a HEAD request for the given URI.
-
#header(name, value) ⇒ Object
Set a header to be included on all subsequent requests through the session.
-
#initialize(mock_session) ⇒ Session
constructor
Creates a Rack::Test::Session for a given Rack app or Rack::MockSession.
-
#post(uri, params = {}, env = {}, &block) ⇒ Object
Issue a POST request for the given URI.
-
#put(uri, params = {}, env = {}, &block) ⇒ Object
Issue a PUT request for the given URI.
-
#request(uri, env = {}, &block) ⇒ Object
Issue a request to the Rack app for the given URI and optional Rack environment.
Methods included from Utils
build_multipart, build_nested_query
Constructor Details
#initialize(mock_session) ⇒ Session
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)
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/rack/test.rb', line 36 def initialize(mock_session) @headers = {} 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 |
Instance Method Details
#basic_authorize(username, password) ⇒ Object Also known as:
Set the username and password for HTTP Basic authorization, to be included in subsequent requests in the HTTP_AUTHORIZATION header.
Example:
"bryan", "secret"
129 130 131 132 |
# File 'lib/rack/test.rb', line 129 def (username, password) encoded_login = ["#{username}:#{password}"].pack("m*") header('Authorization', "Basic #{encoded_login}") end |
#delete(uri, params = {}, env = {}, &block) ⇒ Object
Issue a DELETE request for the given URI. See #get
Example:
delete "/"
82 83 84 85 |
# File 'lib/rack/test.rb', line 82 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) ⇒ Object
Set the username and password for HTTP Digest authorization, to be included in subsequent requests in the HTTP_AUTHORIZATION header.
Example:
"bryan", "secret"
141 142 143 144 |
# File 'lib/rack/test.rb', line 141 def (username, password) @digest_username = username @digest_password = password end |
#follow_redirect! ⇒ Object
Rack::Test will not follow any redirects automatically. This method will follow the redirect returned in the last response. If the last response was not a redirect, an error will be raised.
149 150 151 152 153 154 155 |
# File 'lib/rack/test.rb', line 149 def follow_redirect! unless last_response.redirect? raise Error.new("Last response was not a redirect. Cannot follow_redirect!") end get(last_response["Location"]) end |
#get(uri, params = {}, env = {}, &block) ⇒ Object
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 "/"
55 56 57 58 |
# File 'lib/rack/test.rb', line 55 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) ⇒ Object
Issue a HEAD request for the given URI. See #get
Example:
head "/"
91 92 93 94 |
# File 'lib/rack/test.rb', line 91 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) ⇒ Object
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"
116 117 118 119 120 121 122 |
# File 'lib/rack/test.rb', line 116 def header(name, value) if value.nil? @headers.delete(name) else @headers[name] = value end end |
#post(uri, params = {}, env = {}, &block) ⇒ Object
Issue a POST request for the given URI. See #get
Example:
post "/signup", "name" => "Bryan"
64 65 66 67 |
# File 'lib/rack/test.rb', line 64 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) ⇒ Object
Issue a PUT request for the given URI. See #get
Example:
put "/"
73 74 75 76 |
# File 'lib/rack/test.rb', line 73 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) ⇒ Object
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 "/"
103 104 105 106 |
# File 'lib/rack/test.rb', line 103 def request(uri, env = {}, &block) env = env_for(uri, env) process_request(uri, env, &block) end |