test/test_http_cookie.rb in http-cookie-0.1.5 vs test/test_http_cookie.rb in http-cookie-1.0.0.pre1
- old
+ new
@@ -31,20 +31,20 @@
dates = [ "14 Apr 89 03:20:12",
"14 Apr 89 03:20 GMT",
"Fri, 17 Mar 89 4:01:33",
"Fri, 17 Mar 89 4:01 GMT",
"Mon Jan 16 16:12 PDT 1989",
- "Mon Jan 16 16:12 +0130 1989",
+ #"Mon Jan 16 16:12 +0130 1989",
"6 May 1992 16:41-JST (Wednesday)",
#"22-AUG-1993 10:59:12.82",
"22-AUG-1993 10:59pm",
"22-AUG-1993 12:59am",
"22-AUG-1993 12:59 PM",
#"Friday, August 04, 1995 3:54 PM",
#"06/21/95 04:24:34 PM",
#"20/06/95 21:07",
- "95-06-08 19:32:48 EDT",
+ #"95-06-08 19:32:48 EDT",
]
dates.each do |date|
cookie = "PREF=1; expires=#{date}"
silently do
@@ -81,11 +81,11 @@
end
def test_parse_too_long_cookie
uri = URI.parse 'http://example'
- cookie_str = "foo=#{'クッキー' * 340}; path=/ab/"
+ cookie_str = "foo=#{'Cookie' * 680}; path=/ab/"
assert_equal(HTTP::Cookie::MAX_LENGTH - 1, cookie_str.bytesize)
assert_equal 1, HTTP::Cookie.parse(cookie_str, :origin => uri).size
assert_equal 1, HTTP::Cookie.parse(cookie_str.sub(';', 'x;'), :origin => uri).size
@@ -99,11 +99,11 @@
uri = URI.parse 'http://example'
assert_equal 1, HTTP::Cookie.parse(cookie_str, :origin => uri) { |cookie|
assert_equal 'quoted', cookie.name
- assert_equal '"value"', cookie.value
+ assert_equal 'value', cookie.value
assert_equal 'comment is "comment"', cookie.comment
}.size
end
def test_parse_weird_cookie
@@ -246,16 +246,18 @@
"expired=doh; Expires=Fri, 04 Nov 2011 00:29:51 GMT; Path=/, " \
"a_path=some_path; Expires=Sun, 06 Nov 2011 00:29:51 GMT; Path=/some_path, " \
"no_path1=no_path; Expires=Sun, 06 Nov 2011 00:29:52 GMT, no_expires=nope; Path=/, " \
"no_path2=no_path; Expires=Sun, 06 Nov 2011 00:29:52 GMT; no_expires=nope; Path, " \
"no_path3=no_path; Expires=Sun, 06 Nov 2011 00:29:52 GMT; no_expires=nope; Path=, " \
+ "rel_path1=rel_path; Expires=Sun, 06 Nov 2011 00:29:52 GMT; no_expires=nope; Path=foo/bar, " \
+ "rel_path1=rel_path; Expires=Sun, 06 Nov 2011 00:29:52 GMT; no_expires=nope; Path=foo, " \
"no_domain1=no_domain; Expires=Sun, 06 Nov 2011 00:29:53 GMT; no_expires=nope, " \
"no_domain2=no_domain; Expires=Sun, 06 Nov 2011 00:29:53 GMT; no_expires=nope; Domain, " \
"no_domain3=no_domain; Expires=Sun, 06 Nov 2011 00:29:53 GMT; no_expires=nope; Domain="
cookies = HTTP::Cookie.parse cookie_str, :origin => url
- assert_equal 13, cookies.length
+ assert_equal 15, cookies.length
name = cookies.find { |c| c.name == 'name' }
assert_equal "Aaron", name.value
assert_equal "/", name.path
assert_equal Time.at(1320539391), name.expires
@@ -275,10 +277,17 @@
no_path_cookies.each { |c|
assert_equal "/", c.path, c.name
assert_equal Time.at(1320539392), c.expires, c.name
}
+ rel_path_cookies = cookies.select { |c| c.value == 'rel_path' }
+ assert_equal 2, rel_path_cookies.size
+ rel_path_cookies.each { |c|
+ assert_equal "/", c.path, c.name
+ assert_equal Time.at(1320539392), c.expires, c.name
+ }
+
no_domain_cookies = cookies.select { |c| c.value == 'no_domain' }
assert_equal 3, no_domain_cookies.size
no_domain_cookies.each { |c|
assert !c.for_domain?, c.name
assert_equal c.domain, url.host, c.name
@@ -362,27 +371,36 @@
end
end
def test_set_cookie_value
url = URI.parse('http://rubyforge.org/')
- cookie_params = @cookie_params.merge('secure' => 'secure')
- cookie_value = 'foo=bar'
- cookie_params.keys.combine.each do |keys|
- cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
- cookie, = HTTP::Cookie.parse(cookie_text, :origin => url)
- cookie2, = HTTP::Cookie.parse(cookie.set_cookie_value, :origin => url)
+ ['foo=bar', 'foo="bar"', 'foo="ba\"r baz"'].each { |cookie_value|
+ cookie_params = @cookie_params.merge('secure' => 'secure', 'max-age' => 'Max-Age=1000')
+ date = Time.at(Time.now.to_i)
+ cookie_params.keys.combine.each do |keys|
+ cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
+ cookie, = HTTP::Cookie.parse(cookie_text, :origin => url, :date => date)
+ cookie2, = HTTP::Cookie.parse(cookie.set_cookie_value, :origin => url, :date => date)
- assert_equal(cookie.name, cookie2.name)
- assert_equal(cookie.value, cookie2.value)
- assert_equal(cookie.domain, cookie2.domain)
- assert_equal(cookie.for_domain?, cookie2.for_domain?)
- assert_equal(cookie.path, cookie2.path)
- assert_equal(cookie.expires, cookie2.expires)
- assert_equal(cookie.secure?, cookie2.secure?)
- assert_equal(cookie.httponly?, cookie2.httponly?)
- end
+ assert_equal(cookie.name, cookie2.name)
+ assert_equal(cookie.value, cookie2.value)
+ assert_equal(cookie.domain, cookie2.domain)
+ assert_equal(cookie.for_domain?, cookie2.for_domain?)
+ assert_equal(cookie.path, cookie2.path)
+ assert_equal(cookie.expires, cookie2.expires)
+ if keys.include?('max-age')
+ assert_equal(date + 1000, cookie2.expires)
+ elsif keys.include?('expires')
+ assert_equal(@expires, cookie2.expires)
+ else
+ assert_equal(nil, cookie2.expires)
+ end
+ assert_equal(cookie.secure?, cookie2.secure?)
+ assert_equal(cookie.httponly?, cookie2.httponly?)
+ end
+ }
end
def test_parse_cookie_no_spaces
url = URI.parse('http://rubyforge.org/')
cookie_params = @cookie_params
@@ -443,10 +461,41 @@
:domain => 'rubyforge.org',
:origin => 'http://rubyforge.org/'
}.merge(options)
end
+ def test_bad_name
+ [
+ "a\tb", "a\vb", "a\rb", "a\nb", 'a b',
+ "a\\b", 'a"b', # 'a:b', 'a/b', 'a[b]',
+ 'a=b', 'a,b', 'a;b',
+ ].each { |name|
+ assert_raises(ArgumentError) {
+ HTTP::Cookie.new(cookie_values(:name => name))
+ }
+ cookie = HTTP::Cookie.new(cookie_values)
+ assert_raises(ArgumentError) {
+ cookie.name = name
+ }
+ }
+ end
+
+ def test_bad_value
+ [
+ "a\tb", "a\vb", "a\rb", "a\nb",
+ "a\\b", 'a"b', # 'a:b', 'a/b', 'a[b]',
+ ].each { |name|
+ assert_raises(ArgumentError) {
+ HTTP::Cookie.new(cookie_values(:name => name))
+ }
+ cookie = HTTP::Cookie.new(cookie_values)
+ assert_raises(ArgumentError) {
+ cookie.name = name
+ }
+ }
+ end
+
def test_compare
time = Time.now
cookies = [
{ :created_at => time + 1 },
{ :created_at => time - 1 },
@@ -464,11 +513,34 @@
cookie = HTTP::Cookie.new(cookie_values)
assert_equal false, cookie.expired?
assert_equal true, cookie.expired?(cookie.expires + 1)
assert_equal false, cookie.expired?(cookie.expires - 1)
- cookie.expire
+ cookie.expire!
assert_equal true, cookie.expired?
+ end
+
+ def test_session
+ cookie = HTTP::Cookie.new(cookie_values)
+
+ assert_equal false, cookie.session?
+ assert_equal nil, cookie.max_age
+
+ cookie.expires = nil
+ assert_equal true, cookie.session?
+ assert_equal nil, cookie.max_age
+
+ cookie.expires = Time.now + 3600
+ assert_equal false, cookie.session?
+ assert_equal nil, cookie.max_age
+
+ cookie.max_age = 3600
+ assert_equal false, cookie.session?
+ assert_equal nil, cookie.expires
+
+ cookie.max_age = nil
+ assert_equal true, cookie.session?
+ assert_equal nil, cookie.expires
end
def test_equal
assert_not_equal(HTTP::Cookie.new(cookie_values),
HTTP::Cookie.new(cookie_values(:value => 'bar')))