Cookie#max_age= should not reset #expires when it fails.

This commit is contained in:
Akinori MUSHA 2013-04-18 22:22:11 +09:00
parent 640ea1b297
commit a0202e2192
2 changed files with 14 additions and 1 deletions

View file

@ -497,7 +497,6 @@ class HTTP::Cookie
# See #max_age.
def max_age= sec
@expires = nil
case sec
when Integer, nil
else
@ -507,6 +506,7 @@ class HTTP::Cookie
raise ArgumentError, "invalid Max-Age: #{sec.inspect}"
sec = str.to_i
end
@expires = nil
if @session = sec.nil?
@max_age = nil
else

View file

@ -692,19 +692,32 @@ class TestHTTPCookie < Test::Unit::TestCase
def test_max_age=
cookie = HTTP::Cookie.new(cookie_values)
expires = cookie.expires
assert_raises(ArgumentError) {
cookie.max_age = "+1"
}
# make sure #expires is not destroyed
assert_equal expires, cookie.expires
assert_raises(ArgumentError) {
cookie.max_age = "1.5"
}
# make sure #expires is not destroyed
assert_equal expires, cookie.expires
assert_raises(ArgumentError) {
cookie.max_age = "1 day"
}
# make sure #expires is not destroyed
assert_equal expires, cookie.expires
assert_raises(TypeError) {
cookie.max_age = [1]
}
# make sure #expires is not destroyed
assert_equal expires, cookie.expires
cookie.max_age = "12"
assert_equal 12, cookie.max_age