From fae1c5f270cb6ec19f14f3fb2d558a5cf7234276 Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 21:15:40 +0100 Subject: [PATCH 1/7] fix: convert name to string in cookie jar delete --- lib/rack/test/cookie_jar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rack/test/cookie_jar.rb b/lib/rack/test/cookie_jar.rb index c0c6e9b..d7ec9f1 100644 --- a/lib/rack/test/cookie_jar.rb +++ b/lib/rack/test/cookie_jar.rb @@ -173,7 +173,7 @@ def get_cookie(name) # Delete all cookies with the given name from the cookie jar. def delete(name) @cookies.reject! do |cookie| - cookie.name == name + cookie.name == name.to_s end nil end From 93c662a6c45c4936c643f6f1d5c968ecf44166eb Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 21:26:42 +0100 Subject: [PATCH 2/7] chore: update specs for delete --- spec/rack/test/cookie_jar_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec/rack/test/cookie_jar_spec.rb b/spec/rack/test/cookie_jar_spec.rb index 854c582..e332d77 100644 --- a/spec/rack/test/cookie_jar_spec.rb +++ b/spec/rack/test/cookie_jar_spec.rb @@ -80,4 +80,18 @@ jar.merge(['', 'c=d'], URI.parse('/')) jar.to_hash.must_equal 'c' => 'd' end + + it '#delete deletes the cookie from the jar when passed a string' do + jar = Rack::Test::CookieJar.new + jar[cookie_name] = cookie_value + jar.delete(cookie_name) + jar.to_hash.must_be_empty + end + + it '#delete deletes the cookie from the jar when passed a symbol' do + jar = Rack::Test::CookieJar.new + jar[cookie_name] = cookie_value + jar.delete(cookie_name.to_sym) + jar.to_hash.must_be_empty + end end From 75e0f35bd94e5206faa3524803c078803ceaf134 Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 21:29:46 +0100 Subject: [PATCH 3/7] fix: Rack::Test::CookieJar#get_cookie should accept a symbol --- lib/rack/test/cookie_jar.rb | 2 +- spec/rack/test/cookie_jar_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/rack/test/cookie_jar.rb b/lib/rack/test/cookie_jar.rb index d7ec9f1..2f9e6d6 100644 --- a/lib/rack/test/cookie_jar.rb +++ b/lib/rack/test/cookie_jar.rb @@ -165,7 +165,7 @@ def []=(name, value) # no such cookie exists. def get_cookie(name) @cookies.each do |cookie| - return cookie if cookie.name == name + return cookie if cookie.name == name.to_s end nil end diff --git a/spec/rack/test/cookie_jar_spec.rb b/spec/rack/test/cookie_jar_spec.rb index e332d77..f98a513 100644 --- a/spec/rack/test/cookie_jar_spec.rb +++ b/spec/rack/test/cookie_jar_spec.rb @@ -39,6 +39,14 @@ jar.get_cookie(cookie_name+'a').must_be_nil end + it '#get_cookie with a populated jar returns full cookie objects when passed a symbol' do + jar = Rack::Test::CookieJar.new + jar.get_cookie(cookie_name.to_sym).must_be_nil + jar[cookie_name] = cookie_value + jar.get_cookie(cookie_name.to_sym).must_be_kind_of Rack::Test::Cookie + jar.get_cookie(cookie_name+'a').must_be_nil + end + it '#for returns the cookie header string delimited by semicolon and a space' do jar = Rack::Test::CookieJar.new jar['a'] = 'b' From c90f57c29dd3f20c057531910f7d34ab549ace05 Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 21:42:57 +0100 Subject: [PATCH 4/7] docs: update history --- History.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/History.md b/History.md index 0deacec..e97030e 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,9 @@ +## 2.2.1 / 2025-10-1 + +* Bug fixes: + * `Rack::Test::CookieJar#delete` and `Rack::Test::CookieJar#get_cookie` + now accept a cookie name as Symbol. + ## 2.2.0 / 2024-12-23 * Bug fixes: From 1d1d3576de694241eb81fe2613037d3eaccaa171 Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 22:35:04 +0100 Subject: [PATCH 5/7] refactor: cookie jar delete and get_cookie methods --- lib/rack/test/cookie_jar.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/rack/test/cookie_jar.rb b/lib/rack/test/cookie_jar.rb index 2f9e6d6..ff48da6 100644 --- a/lib/rack/test/cookie_jar.rb +++ b/lib/rack/test/cookie_jar.rb @@ -164,16 +164,18 @@ def []=(name, value) # Return the first cookie with the given name, or nil if # no such cookie exists. def get_cookie(name) + name = name.to_s @cookies.each do |cookie| - return cookie if cookie.name == name.to_s + return cookie if cookie.name == name end nil end # Delete all cookies with the given name from the cookie jar. def delete(name) + name = name.to_s @cookies.reject! do |cookie| - cookie.name == name.to_s + cookie.name == name end nil end From c2fa1508b87b10aa88e09427c3ef226f5e9199d7 Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 22:37:54 +0100 Subject: [PATCH 6/7] chore: add spec for cookie jar []= and [] when passed a symbol --- spec/rack/test/cookie_jar_spec.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/rack/test/cookie_jar_spec.rb b/spec/rack/test/cookie_jar_spec.rb index f98a513..2490c80 100644 --- a/spec/rack/test/cookie_jar_spec.rb +++ b/spec/rack/test/cookie_jar_spec.rb @@ -31,6 +31,14 @@ jar[cookie_name+'a'].must_be_nil end + it '#[] and []= should get and set cookie values when passed a symbol' do + jar = Rack::Test::CookieJar.new + jar[cookie_name.to_sym].must_be_nil + jar[cookie_name.to_sym] = cookie_value + jar[cookie_name.to_sym].must_equal cookie_value + jar[(cookie_name+'a').to_sym].must_be_nil + end + it '#get_cookie with a populated jar returns full cookie objects' do jar = Rack::Test::CookieJar.new jar.get_cookie(cookie_name).must_be_nil From add7e27b865d653b0ce857111ab63ea132344b21 Mon Sep 17 00:00:00 2001 From: Miguel Hargreaves Pimenta Date: Wed, 1 Oct 2025 22:43:52 +0100 Subject: [PATCH 7/7] refactor: cookei jar []= and [] when passed a symbol --- spec/rack/test/cookie_jar_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/rack/test/cookie_jar_spec.rb b/spec/rack/test/cookie_jar_spec.rb index 2490c80..fe59fb8 100644 --- a/spec/rack/test/cookie_jar_spec.rb +++ b/spec/rack/test/cookie_jar_spec.rb @@ -35,7 +35,7 @@ jar = Rack::Test::CookieJar.new jar[cookie_name.to_sym].must_be_nil jar[cookie_name.to_sym] = cookie_value - jar[cookie_name.to_sym].must_equal cookie_value + jar[cookie_name].must_equal cookie_value jar[(cookie_name+'a').to_sym].must_be_nil end