Move TestRequest cookies accessor into AD TestRequest

This commit is contained in:
Joshua Peek
2009-04-30 19:23:50 -05:00
parent d54604c352
commit a6fff94baf
3 changed files with 36 additions and 5 deletions

View File

@@ -2,7 +2,6 @@ require 'rack/session/abstract/id'
module ActionController #:nodoc:
class TestRequest < ActionDispatch::TestRequest #:nodoc:
attr_accessor :cookies
attr_accessor :query_parameters
def initialize(env = {})
@@ -13,7 +12,6 @@ module ActionController #:nodoc:
self.session_options = TestSession::DEFAULT_OPTIONS.merge(:id => ActiveSupport::SecureRandom.hex(16))
@request_uri = "/"
@cookies = {}
end
# Wraps raw_post in a StringIO.

View File

@@ -1,17 +1,24 @@
module ActionDispatch
class TestRequest < Request
DEFAULT_ENV = Rack::MockRequest.env_for('/')
def self.new(env = {})
super
end
def initialize(env = {})
super(Rack::MockRequest.env_for('/').merge(env))
super(DEFAULT_ENV.merge(env))
self.host = 'test.host'
self.remote_addr = '0.0.0.0'
self.user_agent = 'Rails Testing'
end
def env
write_cookies!
super
end
def request_method=(method)
@env['REQUEST_METHOD'] = method.to_s.upcase
end
@@ -49,8 +56,19 @@ module ActionDispatch
end
def accept=(mime_types)
@env.delete("action_dispatch.request.accepts")
@env["HTTP_ACCEPT"] = Array(mime_types).collect { |mime_types| mime_types.to_s }.join(",")
@env.delete('action_dispatch.request.accepts')
@env['HTTP_ACCEPT'] = Array(mime_types).collect { |mime_types| mime_types.to_s }.join(",")
end
def cookies
@cookies ||= super
end
private
def write_cookies!
unless @cookies.blank?
@env['HTTP_COOKIE'] = @cookies.map { |name, value| "#{name}=#{value};" }.join(' ')
end
end
end
end

View File

@@ -27,4 +27,19 @@ class TestRequestTest < ActiveSupport::TestCase
assert env.empty?, env.inspect
end
test "cookie jar" do
req = ActionDispatch::TestRequest.new
assert_equal({}, req.cookies)
assert_equal nil, req.env["HTTP_COOKIE"]
req.cookies["user_name"] = "david"
assert_equal({"user_name" => "david"}, req.cookies)
assert_equal "user_name=david;", req.env["HTTP_COOKIE"]
req.cookies["login"] = "XJ-122"
assert_equal({"user_name" => "david", "login" => "XJ-122"}, req.cookies)
assert_equal "login=XJ-122; user_name=david;", req.env["HTTP_COOKIE"]
end
end