mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
56 lines
1.2 KiB
Ruby
56 lines
1.2 KiB
Ruby
require 'abstract_unit'
|
|
require 'action_dispatch/middleware/session/abstract_store'
|
|
|
|
module ActionDispatch
|
|
module Session
|
|
class AbstractStoreTest < ActiveSupport::TestCase
|
|
class MemoryStore < AbstractStore
|
|
def initialize(app)
|
|
@sessions = {}
|
|
super
|
|
end
|
|
|
|
def get_session(env, sid)
|
|
sid ||= 1
|
|
session = @sessions[sid] ||= {}
|
|
[sid, session]
|
|
end
|
|
|
|
def set_session(env, sid, session, options)
|
|
@sessions[sid] = session
|
|
end
|
|
end
|
|
|
|
def test_session_is_set
|
|
env = {}
|
|
as = MemoryStore.new app
|
|
as.call(env)
|
|
|
|
assert @env
|
|
assert Request::Session.find @env
|
|
end
|
|
|
|
def test_new_session_object_is_merged_with_old
|
|
env = {}
|
|
as = MemoryStore.new app
|
|
as.call(env)
|
|
|
|
assert @env
|
|
session = Request::Session.find @env
|
|
session['foo'] = 'bar'
|
|
|
|
as.call(@env)
|
|
session1 = Request::Session.find @env
|
|
|
|
assert_not_equal session, session1
|
|
assert_equal session.to_hash, session1.to_hash
|
|
end
|
|
|
|
private
|
|
def app(&block)
|
|
@env = nil
|
|
lambda { |env| @env = env }
|
|
end
|
|
end
|
|
end
|
|
end
|