From 9cef3e8fb0f11c6749daec94fc3f337c52041a34 Mon Sep 17 00:00:00 2001 From: Run Paint Run Run Date: Fri, 5 Aug 2011 15:34:18 +0100 Subject: [PATCH] Send cookie for '.example.com' on requests for 'example.com' (Issue #136) --- lib/mechanize/cookie_jar.rb | 2 +- test/test_mechanize_cookie_jar.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/mechanize/cookie_jar.rb b/lib/mechanize/cookie_jar.rb index 5359e768..51acd27e 100644 --- a/lib/mechanize/cookie_jar.rb +++ b/lib/mechanize/cookie_jar.rb @@ -40,7 +40,7 @@ def cookies(url) domains = @jar.find_all { |domain, _| cookie_domain = self.class.strip_port(domain) if cookie_domain.start_with?('.') - url.host =~ /#{Regexp.escape cookie_domain}$/i + url.host =~ /(^|\.)#{Regexp.escape cookie_domain[1..-1]}$/i else url.host =~ /^#{Regexp.escape cookie_domain}$/i end diff --git a/test/test_mechanize_cookie_jar.rb b/test/test_mechanize_cookie_jar.rb index 3c73cda8..2fce670f 100644 --- a/test/test_mechanize_cookie_jar.rb +++ b/test/test_mechanize_cookie_jar.rb @@ -184,6 +184,22 @@ def test_cookies_with_leading_dot_match_subdomains assert_equal(1, @jar.cookies(url).length) end + def test_cookies_with_leading_dot_match_parent_domains + url = URI.parse('http://rubyforge.org/') + + @jar.add(url, cookie_from_hash(cookie_values(:domain => '.rubyforge.org'))) + + assert_equal(1, @jar.cookies(url).length) + end + + def test_cookies_with_leading_dot_match_parent_domains_exactly + url = URI.parse('http://arubyforge.org/') + + @jar.add(url, cookie_from_hash(cookie_values(:domain => '.rubyforge.org'))) + + assert_equal(0, @jar.cookies(url).length) + end + def test_cookies_dot url = URI.parse('http://www.host.example/')