Changeset 6226
- Timestamp:
- 02/25/07 16:35:24 (2 years ago)
- Files:
-
- trunk/actionpack/CHANGELOG (modified) (1 diff)
- trunk/actionpack/lib/action_controller/session/cookie_store.rb (modified) (2 diffs)
- trunk/actionpack/test/controller/session/cookie_store_test.rb (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack/CHANGELOG
r6221 r6226 1 1 *SVN* 2 3 * Cookie session store: empty and unchanged sessions don't write a cookie. [Jeremy Kemper] 2 4 3 5 * Added helper(:all) as a way to include all helpers from app/helpers/**/*.rb in ApplicationController [DHH] trunk/actionpack/lib/action_controller/session/cookie_store.rb
r6200 r6226 66 66 # Write the session data cookie if it was loaded and has changed. 67 67 def close 68 if defined? @data68 if defined?(@data) && !@data.blank? 69 69 updated = marshal(@data) 70 70 raise CookieOverflow if updated.size > MAX … … 75 75 # Delete the session data by setting an expired cookie with no data. 76 76 def delete 77 @data = nil 77 78 write_cookie('value' => '', 'expires' => 1.year.ago) 78 79 end trunk/actionpack/test/controller/session/cookie_store_test.rb
r6200 r6226 69 69 end 70 70 71 def test_close_doesnt_write_cookie_if_data_is_blank 72 new_session do |session| 73 assert_nil session.cgi.output_cookies, session.cgi.output_cookies.inspect 74 session.close 75 assert_nil session.cgi.output_cookies, session.cgi.output_cookies.inspect 76 end 77 end 78 71 79 def test_close_doesnt_write_cookie_if_data_is_unchanged 72 80 set_cookie! Cookies::TYPICAL.first … … 74 82 assert_nil session.cgi.output_cookies, session.cgi.output_cookies.inspect 75 83 session['user_id'] = session['user_id'] 84 session.close 76 85 assert_nil session.cgi.output_cookies, session.cgi.output_cookies.inspect 77 86 end … … 92 101 end 93 102 94 def test_delete_writes_expired_empty_cookie 103 def test_delete_writes_expired_empty_cookie_and_sets_data_to_nil 95 104 set_cookie! Cookies::TYPICAL.first 96 105 new_session do |session| … … 99 108 assert_equal 1, session.cgi.output_cookies.size 100 109 cookie = session.cgi.output_cookies.first 110 assert_equal ['_myapp_session', [], 1.year.ago.to_date], 111 [cookie.name, cookie.value, cookie.expires.to_date] 112 113 # @data is set to nil so #close doesn't send another cookie. 114 session.close 101 115 assert_equal ['_myapp_session', [], 1.year.ago.to_date], 102 116 [cookie.name, cookie.value, cookie.expires.to_date]