On Wed, Jul 2, 2008 at 9:41 AM, David Chelimsky <[EMAIL PROTECTED]> wrote: > On Jul 2, 2008, at 11:15 AM, Christopher Bailey wrote: > >> On Wed, Jul 2, 2008 at 4:06 AM, David Chelimsky <[EMAIL PROTECTED]> >> wrote: >> <snip> >>> >>> This is just one of those goofy things in Rails testing. I'm not sure >>> the best way to make it easier in rspec without breaking existing >>> examples in the process. Regardless, here's how you interact with >>> cookies from an example: >>> >>> To set a cookie: >>> >>> request.cookies[:cookie_key] = CGI::Cookie.new('cookie_key', 'cookie >>> value') >> >> When I do this, in order to get to this cookie in my controller code, >> I have to do >> >> cookies[:cookie_key][:cookie_key] > > Sorry Christopher - try this: > > request.cookies[:cookie_key] = 'cookie value'
I tried that (see below in my email - I just mistakenly wrote it without the "request." at the beginning). When I do this, it appears to set it, but then trying to retrieve it in my controller fails (even though the key is there, and the value is there, when then requesting cookies[:cookie_key] I get no value back). Pretty weird. > Cheers, > David > >> Basically, it appears that what it does is assign that key a hash of >> its own. That makes sense of course, as I realize a cookie is really >> a hash of name, value, path, expires, and so on. However, it doesn't >> jive with the retrieval, as you shouldn't have to double reference it >> (which I believe is essentially the point of the [] method on >> ActionController::CookieJar and is not how things are documented). >> >> However, what's really behaving weird, is if I do: >> >> cookies[:cookie_key] = "1234" >> >> Then, in my controller code, if I look at "cookies", it shows that >> cookies is a hash, and if I call .keys on it, it spits out >> ":cookie_key", and if I call .values on it, it says "1234", but if I >> then go and do cookies[:cookie_key], it gives me nil. >> >> Again, I have to suspect something weird going on with Rails test >> environment/RSpec, since all this works fine outside of tests. Any >> suggestions on how to debug this further or what might be wrong? >> >> I should note I'm using Rails 2.1, and RSpec and rspec-rails from >> about a week ago (from GitHub). >> >>> To read a cookie >>> >>> response.cookies[:cookie_key].should == ["expected value"] >>> >>> or >>> >>> cookies[:cookie_key].should == ["expected value"] >>> >>> Rails provides a cookies object that is actually response.cookies, so >>> you don't *have* to reference it through the response object. I would, >>> however, as I've been known to try to set a cookie in an example using >>> cookies when I should have been using request.cookies. So I try to >>> keep them explicit. >>> >>> HTH, >>> David >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users@rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >> >> >> >> -- >> Christopher Bailey >> Cobalt Edge LLC >> http://cobaltedge.com >> _______________________________________________ >> rspec-users mailing list >> rspec-users@rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > -- Christopher Bailey Cobalt Edge LLC http://cobaltedge.com _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users