Project

General

Profile

Refactor #23875

Updated by Lukas Zapletal almost 2 years ago

In #4457 we introduced a change and two tests to verify the session does not leak session id via old session hash reference. Starting from Rails 4.0 the implementation used in tests (TestSession) was given a @destroy@ method (https://github.com/rails/rails/commit/7d624e0e8cfa3adffd8f475e3588d83f3b367c24#diff-600d5368b55e46ed961abb4295977ac3R254) which enables the session stack to use it instead creation of new hash instance (https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L349-L355). This should lead to regression in tests, but due to oversight in test assertion, it was never failing:

refute old_session.keys.include?(:user)

Method keys always return entries as strings, therefore this line never fired. The purpose of this ticket is to refactor this - simply by removing the two tests, because we already test presence of user session key in "sets the session user" test and call of @reset_session@ (which calls @destroy@ method) in "changes the session ID to prevent fixation" test.


But the

Back