1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
require 'abstract_unit'
require 'action_dispatch/middleware/session/abstract_store'
module ActionDispatch
class Request
class SessionTest < ActiveSupport::TestCase
attr_reader :req
def setup
@req = ActionDispatch::Request.empty
end
def test_create_adds_itself_to_env
s = Session.create(store, req, {})
assert_equal s, req.env[Rack::RACK_SESSION]
end
def test_to_hash
s = Session.create(store, req, {})
s['foo'] = 'bar'
assert_equal 'bar', s['foo']
assert_equal({'foo' => 'bar'}, s.to_hash)
end
def test_create_merges_old
s = Session.create(store, req, {})
s['foo'] = 'bar'
s1 = Session.create(store, req, {})
assert_not_equal s, s1
assert_equal 'bar', s1['foo']
end
def test_find
assert_nil Session.find(req)
s = Session.create(store, req, {})
assert_equal s, Session.find(req)
end
def test_destroy
s = Session.create(store, req, {})
s['rails'] = 'ftw'
s.destroy
assert_empty s
end
def test_keys
s = Session.create(store, req, {})
s['rails'] = 'ftw'
s['adequate'] = 'awesome'
assert_equal %w[rails adequate], s.keys
end
def test_values
s = Session.create(store, req, {})
s['rails'] = 'ftw'
s['adequate'] = 'awesome'
assert_equal %w[ftw awesome], s.values
end
def test_clear
s = Session.create(store, req, {})
s['rails'] = 'ftw'
s['adequate'] = 'awesome'
s.clear
assert_empty(s.values)
end
def test_update
s = Session.create(store, req, {})
s['rails'] = 'ftw'
s.update(:rails => 'awesome')
assert_equal(['rails'], s.keys)
assert_equal('awesome', s['rails'])
end
def test_delete
s = Session.create(store, req, {})
s['rails'] = 'ftw'
s.delete('rails')
assert_empty(s.keys)
end
def test_fetch
session = Session.create(store, req, {})
session['one'] = '1'
assert_equal '1', session.fetch(:one)
assert_equal '2', session.fetch(:two, '2')
assert_nil session.fetch(:two, nil)
assert_equal 'three', session.fetch(:three) {|el| el.to_s }
assert_raise KeyError do
session.fetch(:three)
end
end
def test_indifferent_access
s = Session.create(store, req, {})
s[:one] = { test: "deep" }
s[:two] = { "test" => "deep" }
assert_equal 'deep', s[:one]["test"]
assert_equal 'deep', s[:two][:test]
end
private
def store
Class.new {
def load_session(env); [1, {}]; end
def session_exists?(env); true; end
def delete_session(env, id, options); 123; end
}.new
end
end
end
end
|