Permalink
Browse files

Merge pull request #4613 from pda/cookie_jar_deleted_predicate

CookieJar#deleted? predicate method
  • Loading branch information...
2 parents ec65f14 + 5169543 commit adb75680db377bf9026dd26f87200267eb786a2d @josevalim josevalim committed Jan 23, 2012
Showing with 20 additions and 0 deletions.
  1. +9 −0 actionpack/lib/action_dispatch/middleware/cookies.rb
  2. +11 −0 actionpack/test/dispatch/cookies_test.rb
@@ -191,6 +191,15 @@ def delete(key, options = {})
value
end
+ # Whether the given cookie is to be deleted by this CookieJar.
+ # Like <tt>[]=</tt>, you can pass in an options hash to test if a
+ # deletion applies to a specific <tt>:path</tt>, <tt>:domain</tt> etc.
+ def deleted?(key, options = {})
+ options.symbolize_keys!
+ handle_options(options)
+ @delete_cookies[key.to_s] == options
+ end
+
# Removes all cookies on the client machine by calling <tt>delete</tt> for each cookie
def clear(options = {})
@cookies.each_key{ |k| delete(k, options) }
@@ -245,6 +245,17 @@ def test_delete_cookie_with_path
assert_cookie_header "user_name=; path=/beaten; expires=Thu, 01-Jan-1970 00:00:00 GMT"
end
+ def test_deleted_cookie_predicate
+ cookies.delete("user_name")
+ assert cookies.deleted?("user_name")
+ assert_equal false, cookies.deleted?("another")
+ end
+
+ def test_deleted_cookie_predicate_with_mismatching_options
+ cookies.delete("user_name", :path => "/path")
+ assert_equal false, cookies.deleted?("user_name", :path => "/different")
+ end
+
def test_cookies_persist_throughout_request
response = get :authenticate
assert response.headers["Set-Cookie"] =~ /user_name=david/

0 comments on commit adb7568

Please sign in to comment.