I've upgraded an existing application from 2.1 to 2.2.2. All of the
integration tests failed, complaining about there being no 'secret'
defined in the session_store configuration options. There isn't a
secret defined, since we don't use the cookie session store (it's a
wap site, and many phone browsers don't support cookies). Setting the
secret to an appropriate value fixed all the tests.
It looks like the database_manager is hardcoded to be a CookieStore in
rack_process.rb.
Is there any plan on getting integration tests to use the actual
configured cookie store? Or should we be finding a better way to do
higher level integration tests?
What I ended up doing was overriding the default options in
RackRequest.
In test.rb, I added
class ActionController::RackRequest
DEFAULT_SESSION_OPTIONS = {
:database_manager => CGI::Session::MemoryStore, # store data in
memory
:prefix => "ruby_sess.", # prefix session file names
:session_path => "/", # available to all paths in
app
:session_key => "_session_id",
:cookie_only => false,
:session_http_only=> true
}
end
I get a warning about the constant already being defined, but it's
better than having the tests fail.