Module: Rack::Test::Methods

Extended by:
Forwardable
Defined in:
lib/rack/test/methods.rb

Overview

This module serves as the primary integration point for using Rack::Test in a testing environment. It depends on an app method being defined in the same context, and provides the Rack::Test API methods (see Rack::Test::Session for their documentation).

Example:

class HomepageTest < Test::Unit::TestCase
  include Rack::Test::Methods

  def app
    MyApp.new
  end
end

Constant Summary collapse

METHODS =
[
  :request,
  :get,
  :post,
  :put,
  :delete,
  :head,
  :follow_redirect!,
  :header,
  :set_cookie,
  :clear_cookies,
  :authorize,
  :basic_authorize,
  :digest_authorize,
  :last_response,
  :last_request
]

Instance Method Summary collapse

Instance Method Details

#_current_session_namesObject

:nodoc:



55
56
57
# File 'lib/rack/test/methods.rb', line 55

def _current_session_names # :nodoc:
  @_current_session_names ||= [:default]
end

#build_rack_mock_sessionObject

:nodoc:



30
31
32
# File 'lib/rack/test/methods.rb', line 30

def build_rack_mock_session # :nodoc:
  Rack::MockSession.new(app)
end

#build_rack_test_session(name) ⇒ Object

:nodoc:



41
42
43
# File 'lib/rack/test/methods.rb', line 41

def build_rack_test_session(name) # :nodoc:
  Rack::Test::Session.new(rack_mock_session(name))
end

#current_sessionObject

:nodoc:



45
46
47
# File 'lib/rack/test/methods.rb', line 45

def current_session # :nodoc:
  rack_test_session(_current_session_names.last)
end

#rack_mock_session(name = :default) ⇒ Object

:nodoc:



23
24
25
26
27
28
# File 'lib/rack/test/methods.rb', line 23

def rack_mock_session(name = :default) # :nodoc:
  return build_rack_mock_session unless name

  @_rack_mock_sessions ||= {}
  @_rack_mock_sessions[name] ||= build_rack_mock_session
end

#rack_test_session(name = :default) ⇒ Object

:nodoc:



34
35
36
37
38
39
# File 'lib/rack/test/methods.rb', line 34

def rack_test_session(name = :default) # :nodoc:
  return build_rack_test_session(name) unless name

  @_rack_test_sessions ||= {}
  @_rack_test_sessions[name] ||= build_rack_test_session(name)
end

#with_session(name) {|rack_test_session(name)| ... } ⇒ Object

:nodoc:

Yields:



49
50
51
52
53
# File 'lib/rack/test/methods.rb', line 49

def with_session(name) # :nodoc:
  _current_session_names.push(name)
  yield rack_test_session(name)
  _current_session_names.pop
end