Allow symbols to be used as keys for setting cookies

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@21 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2004-11-26 02:09:38 +00:00
parent d0c90331f1
commit defda16b83
2 changed files with 13 additions and 2 deletions

View File

@ -4,14 +4,14 @@ module ActionController #:nodoc:
# itself back -- just the value it holds). Examples for writting:
#
# cookies["user_name"] = "david" # => Will set a simple session cookie
# cookies["login"] = { "value" => "XJ-122", "expires" => Time.now + 360} # => Will set a cookie that expires in 1 hour
# cookies["login"] = { :value => "XJ-122", :expires => Time.now + 360} # => Will set a cookie that expires in 1 hour
#
# Examples for reading:
#
# cookies["user_name"] # => "david"
# cookies.size # => 2
#
# All the options for setting cookies are:
# All the option symbols for setting cookies are:
#
# value:: the cookie's value or list of values (as an array).
# path:: the path for which this cookie applies. Defaults to the root of the application.
@ -41,6 +41,7 @@ module ActionController #:nodoc:
def []=(name, options)
if options.is_a?(Hash)
options.each { |key, value| options[key.to_s] = value }
options["name"] = name
else
options = [ name, options ]

View File

@ -17,6 +17,11 @@ class CookieTest < Test::Unit::TestCase
render_text "hello world"
end
def authenticate_for_fourten_days_with_symbols
cookies["user_name"] = { :value => "david", :expires => Time.local(2005, 10, 10) }
render_text "hello world"
end
def set_multiple_cookies
cookies["user_name"] = { "value" => "david", "expires" => Time.local(2005, 10, 10) }
cookies["login"] = "XJ-122"
@ -52,6 +57,11 @@ class CookieTest < Test::Unit::TestCase
assert_equal [ CGI::Cookie::new("name" => "user_name", "value" => "david", "expires" => Time.local(2005, 10, 10)) ], process_request.headers["cookie"]
end
def test_setting_cookie_for_fourteen_days_with_symbols
@request.action = "authenticate_for_fourten_days"
assert_equal [ CGI::Cookie::new("name" => "user_name", "value" => "david", "expires" => Time.local(2005, 10, 10)) ], process_request.headers["cookie"]
end
def test_multiple_cookies
@request.action = "set_multiple_cookies"
assert_equal 2, process_request.headers["cookie"].size