Rails 2.2 Integration tests cookie store

58 views
Skip to first unread message

Darren

unread,
Nov 22, 2008, 5:51:56 PM11/22/08
to Ruby on Rails: Talk

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?

Thanks,
Darren

Lee Fyock

unread,
Dec 9, 2008, 3:49:51 PM12/9/08
to Ruby on Rails: Talk
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.

Also see <http://rails.lighthouseapp.com/projects/8994/tickets/1453-
gets-in-integration-test-unless-you-are-using-cookie-sessions>.

Lee

Zaphod Beeblebrox

unread,
Jan 20, 2009, 9:59:17 AM1/20/09
to Ruby on Rails: Talk
Someone to give me the configuration for
"config.action_controller.session_store = :active_record_store" ?!

Thanks.

Zaphod Beeblebrox

unread,
Feb 3, 2009, 3:15:12 AM2/3/09
to Ruby on Rails: Talk
Ok the good configuration for Session store une database by
ActiveRecord is :

class ActionController::RackRequest
DEFAULT_SESSION_OPTIONS = {
:database_manager => CGI::Session::ActiveRecordStore,
:cookie_only => false,
:session_http_only=> true
}
end

Add this code in integration test.
Reply all
Reply to author
Forward
0 new messages