From d83b594a3c2c1d0319898e889f7d7ff25e428984 Mon Sep 17 00:00:00 2001 From: Thibaut Sacreste Date: Fri, 9 Nov 2012 14:07:40 +0000 Subject: [PATCH] cookies.delete honours the app cookie options --- sinatra-contrib/lib/sinatra/cookies.rb | 2 +- sinatra-contrib/spec/cookies_spec.rb | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/sinatra-contrib/lib/sinatra/cookies.rb b/sinatra-contrib/lib/sinatra/cookies.rb index fb2cd213..76622f01 100644 --- a/sinatra-contrib/lib/sinatra/cookies.rb +++ b/sinatra-contrib/lib/sinatra/cookies.rb @@ -111,7 +111,7 @@ module Sinatra def delete(key) result = self[key] - @response.delete_cookie(key.to_s) + @response.delete_cookie(key.to_s, @options) result end diff --git a/sinatra-contrib/spec/cookies_spec.rb b/sinatra-contrib/spec/cookies_spec.rb index 92f2e49b..410cd7b6 100644 --- a/sinatra-contrib/spec/cookies_spec.rb +++ b/sinatra-contrib/spec/cookies_spec.rb @@ -154,11 +154,11 @@ describe Sinatra::Cookies do end.should be_nil end - it 'expiers existing cookies' do + it 'expires existing cookies' do cookie_route("foo=bar") do cookies.clear response['Set-Cookie'] - end.should include("foo=; expires=Thu, 01-Jan-1970 00:00:00 GMT") + end.should include("foo=;", "expires=Thu, 01-Jan-1970 00:00:00 GMT") end end @@ -185,16 +185,32 @@ describe Sinatra::Cookies do it 'removes response cookies from cookies hash' do cookie_route do cookies['foo'] = 'bar' - cookies.clear + cookies.delete 'foo' cookies['foo'] end.should be_nil end - it 'expiers existing cookies' do + it 'expires existing cookies' do cookie_route("foo=bar") do cookies.delete 'foo' response['Set-Cookie'] - end.should include("foo=; expires=Thu, 01-Jan-1970 00:00:00 GMT") + end.should include("foo=;", "expires=Thu, 01-Jan-1970 00:00:00 GMT") + end + + it 'honours the app cookie_options' do + @cookie_app.class_eval do + set :cookie_options, { + :path => '/foo', + :domain => 'bar.com', + :secure => true, + :httponly => true + } + end + cookie_header = cookie_route("foo=bar") do + cookies.delete 'foo' + response['Set-Cookie'] + end + cookie_header.should include("path=/foo;", "domain=bar.com;", "secure;", "HttpOnly") end it 'does not touch other cookies' do