提交 3bed6796 编写于 作者: K Kasper Timm Hansen

Merge pull request #24820 from maclover7/fix-15843

Ensure compatibility between ActionDispatch::Request::Session and Rack
......@@ -9,7 +9,7 @@ class Session # :nodoc:
# Singleton object used to determine if an optional param wasn't specified
Unspecified = Object.new
# Creates a session hash, merging the properties of the previous session if any
def self.create(store, req, default_options)
session_was = find req
......@@ -198,6 +198,10 @@ def merge!(other)
@delegate.merge!(other)
end
def each(&block)
to_hash.each(&block)
end
private
def load_for_read!
......
......@@ -114,5 +114,31 @@ def delete_session(env, id, options); 123; end
}.new
end
end
class SessionIntegrationTest < ActionDispatch::IntegrationTest
class MySessionApp
def call(env)
request = Rack::Request.new(env)
request.session['hello'] = 'Hello from MySessionApp!'
[ 200, {}, ['Hello from MySessionApp!'] ]
end
end
Router = ActionDispatch::Routing::RouteSet.new
Router.draw do
get '/mysessionapp' => MySessionApp.new
end
def app
@app ||= RoutedRackApp.new(Router)
end
def test_session_follows_rack_api_contract_1
get '/mysessionapp'
assert_response :ok
assert_equal 'Hello from MySessionApp!', @response.body
assert_equal 'Hello from MySessionApp!', session['hello']
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册