From 75f7ee6505799b0c823f5e4db7b066b02c0de48f Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Thu, 18 Oct 2012 18:57:46 +0900 Subject: [PATCH] Make valid_for_uri? and acceptable_from_uri? accept a URL string also. --- lib/http/cookie.rb | 2 ++ test/test_http_cookie.rb | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/http/cookie.rb b/lib/http/cookie.rb index dc2bbf5..4c66880 100644 --- a/lib/http/cookie.rb +++ b/lib/http/cookie.rb @@ -246,6 +246,7 @@ class HTTP::Cookie alias secure? secure def acceptable_from_uri?(uri) + uri = URI(uri) host = DomainName.new(uri.host) # RFC 6265 5.3 @@ -263,6 +264,7 @@ class HTTP::Cookie end def valid_for_uri?(uri) + uri = URI(uri) return false if secure? && uri.scheme != 'https' acceptable_from_uri?(uri) && (@path.nil? || uri.path.start_with?(@path)) end diff --git a/test/test_http_cookie.rb b/test/test_http_cookie.rb index fa7c53b..03f4161 100644 --- a/test/test_http_cookie.rb +++ b/test/test_http_cookie.rb @@ -519,6 +519,7 @@ class TestHTTPCookie < Test::Unit::TestCase def test_valid_for_uri? cookie = HTTP::Cookie.parse('a=b', :origin => URI('http://example.com/dir/file.html')).first assert_equal true, cookie.valid_for_uri?(URI('https://example.com/dir/test.html')) + assert_equal true, cookie.valid_for_uri?('https://example.com/dir/test.html') assert_equal true, cookie.valid_for_uri?(URI('http://example.com/dir/test.html')) assert_equal false, cookie.valid_for_uri?(URI('https://example.com/dir2/test.html')) assert_equal false, cookie.valid_for_uri?(URI('http://example.com/dir2/test.html'))