From 96222bfadd73d54ac43809c1d965f263c5a50aaa Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 1 Jul 2010 14:34:33 -0700 Subject: [PATCH] fisting Session::AbstractStore#clear to actually clear the session. [#5030 state:resolved] --- .../action_controller/session/abstract_store.rb | 5 ++++ .../test/controller/session/cookie_store_test.rb | 22 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/actionpack/lib/action_controller/session/abstract_store.rb b/actionpack/lib/action_controller/session/abstract_store.rb index 97f9cc5..119b139 100644 --- a/actionpack/lib/action_controller/session/abstract_store.rb +++ b/actionpack/lib/action_controller/session/abstract_store.rb @@ -34,6 +34,11 @@ module ActionController super end + def clear + load! unless @loaded + super + end + def to_hash h = {}.replace(self) h.delete_if { |k,v| v.nil? } diff --git a/actionpack/test/controller/session/cookie_store_test.rb b/actionpack/test/controller/session/cookie_store_test.rb index 26d5689..b45eb1e 100644 --- a/actionpack/test/controller/session/cookie_store_test.rb +++ b/actionpack/test/controller/session/cookie_store_test.rb @@ -34,6 +34,11 @@ class CookieStoreTest < ActionController::IntegrationTest render :text => "foo: #{session[:foo].inspect}; id: #{request.session_options[:id]}" end + def call_session_clear + session.clear + head :ok + end + def call_reset_session reset_session head :ok @@ -184,6 +189,23 @@ class CookieStoreTest < ActionController::IntegrationTest end end + def test_setting_session_value_after_session_clear + with_test_route_set do + get '/set_session_value' + assert_response :success + session_payload = response.body + assert_equal ["_myapp_session=#{response.body}; path=/; HttpOnly"], + headers['Set-Cookie'] + + get '/call_session_clear' + assert_response :success + + get '/get_session_value' + assert_response :success + assert_equal 'foo: nil', response.body + end + end + def test_persistent_session_id with_test_route_set do cookies[SessionKey] = SignedBar -- 1.7.0.6