From a0202e21926daefae54edc054435be4d4c113e42 Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Thu, 18 Apr 2013 22:22:11 +0900 Subject: [PATCH] Cookie#max_age= should not reset #expires when it fails. --- lib/http/cookie.rb | 2 +- test/test_http_cookie.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/http/cookie.rb b/lib/http/cookie.rb index 4250b70..a36ae04 100644 --- a/lib/http/cookie.rb +++ b/lib/http/cookie.rb @@ -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 diff --git a/test/test_http_cookie.rb b/test/test_http_cookie.rb index 8854bcf..02727c4 100644 --- a/test/test_http_cookie.rb +++ b/test/test_http_cookie.rb @@ -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