summaryrefslogtreecommitdiff
path: root/test/spec_session_cookie.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2011-05-04 20:36:37 +0200
committerJosé Valim <jose.valim@gmail.com>2011-05-04 20:36:37 +0200
commit20ed4ff43e062e3b4370ed01c07a64d487de2b27 (patch)
treef7d755b1089c02b4529cd85aec5a98a2ed25ec95 /test/spec_session_cookie.rb
parent18040b59dad3f2efe96d5b70b2260764fcda4784 (diff)
downloadrack-20ed4ff43e062e3b4370ed01c07a64d487de2b27.tar.gz
Ensure cookies respect renew.
Diffstat (limited to 'test/spec_session_cookie.rb')
-rw-r--r--test/spec_session_cookie.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/spec_session_cookie.rb b/test/spec_session_cookie.rb
index 7e6bfb15..7eb3faea 100644
--- a/test/spec_session_cookie.rb
+++ b/test/spec_session_cookie.rb
@@ -87,6 +87,27 @@ describe Rack::Session::Cookie do
res.body.should.equal '{"counter"=>3}'
end
+ renewer = lambda do |env|
+ env["rack.session.options"][:renew] = true
+ Rack::Response.new("Nothing").to_a
+ end
+
+ only_session_id = lambda do |env|
+ Rack::Response.new(env["rack.session"]["session_id"]).to_a
+ end
+
+ it "renew session id" do
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/")
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(only_session_id)).
+ get("/", "HTTP_COOKIE" => res["Set-Cookie"])
+ old_session_id = res.body
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(renewer)).
+ get("/", "HTTP_COOKIE" => res["Set-Cookie"])
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(only_session_id)).
+ get("/", "HTTP_COOKIE" => res["Set-Cookie"])
+ res.body.should.not.equal old_session_id
+ end
+
it "survives broken cookies" do
res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
get("/", "HTTP_COOKIE" => "rack.session=blarghfasel")