|
16 | 16 | Rack::Session::Dalli.new(incrementor)
|
17 | 17 | end
|
18 | 18 |
|
| 19 | + def clean_body(body) |
| 20 | + body.lines.reject { |line| line.start_with?('#') }.join |
| 21 | + end |
| 22 | + |
19 | 23 | let(:session_key) { Rack::Session::Dalli::DEFAULT_OPTIONS[:key] }
|
20 | 24 | let(:session_match) do
|
21 | 25 | /#{session_key}=([0-9a-fA-F]+);/
|
|
114 | 118 | res = Rack::MockRequest.new(rsd).get('/')
|
115 | 119 |
|
116 | 120 | assert_includes res['Set-Cookie'], "#{session_key}="
|
117 |
| - assert_equal '{"counter"=>1}', res.body |
| 121 | + assert_equal '{"counter"=>1}', clean_body(res.body) |
118 | 122 | end
|
119 | 123 |
|
120 | 124 | it 'determines session from a cookie' do
|
|
123 | 127 | res = req.get('/')
|
124 | 128 | cookie = res['Set-Cookie']
|
125 | 129 |
|
126 |
| - assert_equal '{"counter"=>2}', req.get('/', 'HTTP_COOKIE' => cookie).body |
127 |
| - assert_equal '{"counter"=>3}', req.get('/', 'HTTP_COOKIE' => cookie).body |
| 130 | + assert_equal '{"counter"=>2}', clean_body(req.get('/', 'HTTP_COOKIE' => cookie).body) |
| 131 | + assert_equal '{"counter"=>3}', clean_body(req.get('/', 'HTTP_COOKIE' => cookie).body) |
128 | 132 | end
|
129 | 133 |
|
130 | 134 | it 'determines session only from a cookie by default' do
|
|
133 | 137 | res = req.get('/')
|
134 | 138 | sid = res['Set-Cookie'][session_match, 1]
|
135 | 139 |
|
136 |
| - assert_equal '{"counter"=>1}', req.get("/?rack.session=#{sid}").body |
137 |
| - assert_equal '{"counter"=>1}', req.get("/?rack.session=#{sid}").body |
| 140 | + assert_equal '{"counter"=>1}', clean_body(req.get("/?rack.session=#{sid}").body) |
| 141 | + assert_equal '{"counter"=>1}', clean_body(req.get("/?rack.session=#{sid}").body) |
138 | 142 | end
|
139 | 143 |
|
140 | 144 | it 'determines session from params' do
|
|
143 | 147 | res = req.get('/')
|
144 | 148 | sid = res['Set-Cookie'][session_match, 1]
|
145 | 149 |
|
146 |
| - assert_equal '{"counter"=>2}', req.get("/?rack.session=#{sid}").body |
147 |
| - assert_equal '{"counter"=>3}', req.get("/?rack.session=#{sid}").body |
| 150 | + assert_equal '{"counter"=>2}', clean_body(req.get("/?rack.session=#{sid}").body) |
| 151 | + assert_equal '{"counter"=>3}', clean_body(req.get("/?rack.session=#{sid}").body) |
148 | 152 | end
|
149 | 153 |
|
150 | 154 | it 'survives nonexistant cookies' do
|
|
153 | 157 | res = Rack::MockRequest.new(rsd)
|
154 | 158 | .get('/', 'HTTP_COOKIE' => bad_cookie)
|
155 | 159 |
|
156 |
| - assert_equal '{"counter"=>1}', res.body |
| 160 | + assert_equal '{"counter"=>1}', clean_body(res.body) |
157 | 161 | cookie = res['Set-Cookie'][session_match]
|
158 | 162 |
|
159 | 163 | refute_match(/#{bad_cookie}/, cookie)
|
|
208 | 212 | res0 = req.get('/')
|
209 | 213 | cookie = res0['Set-Cookie'][session_match]
|
210 | 214 |
|
211 |
| - assert_equal '{"counter"=>1}', res0.body |
| 215 | + assert_equal '{"counter"=>1}', clean_body(res0.body) |
212 | 216 |
|
213 | 217 | res1 = req.get('/', 'HTTP_COOKIE' => cookie)
|
214 | 218 |
|
215 | 219 | assert_nil res1['Set-Cookie']
|
216 |
| - assert_equal '{"counter"=>2}', res1.body |
| 220 | + assert_equal '{"counter"=>2}', clean_body(res1.body) |
217 | 221 |
|
218 | 222 | res2 = req.get('/', 'HTTP_COOKIE' => cookie)
|
219 | 223 |
|
220 | 224 | assert_nil res2['Set-Cookie']
|
221 |
| - assert_equal '{"counter"=>3}', res2.body |
| 225 | + assert_equal '{"counter"=>3}', clean_body(res2.body) |
222 | 226 | end
|
223 | 227 |
|
224 | 228 | it 'deletes cookies with :drop option' do
|
|
230 | 234 | res1 = req.get('/')
|
231 | 235 | session = (cookie = res1['Set-Cookie'])[session_match]
|
232 | 236 |
|
233 |
| - assert_equal '{"counter"=>1}', res1.body |
| 237 | + assert_equal '{"counter"=>1}', clean_body(res1.body) |
234 | 238 |
|
235 | 239 | res2 = dreq.get('/', 'HTTP_COOKIE' => cookie)
|
236 | 240 |
|
237 | 241 | assert_nil res2['Set-Cookie']
|
238 |
| - assert_equal '{"counter"=>2}', res2.body |
| 242 | + assert_equal '{"counter"=>2}', clean_body(res2.body) |
239 | 243 |
|
240 | 244 | res3 = req.get('/', 'HTTP_COOKIE' => cookie)
|
241 | 245 |
|
242 | 246 | refute_equal session, res3['Set-Cookie'][session_match]
|
243 |
| - assert_equal '{"counter"=>1}', res3.body |
| 247 | + assert_equal '{"counter"=>1}', clean_body(res3.body) |
244 | 248 | end
|
245 | 249 |
|
246 | 250 | it 'provides new session id with :renew option' do
|
|
252 | 256 | res1 = req.get('/')
|
253 | 257 | session = (cookie = res1['Set-Cookie'])[session_match]
|
254 | 258 |
|
255 |
| - assert_equal '{"counter"=>1}', res1.body |
| 259 | + assert_equal '{"counter"=>1}', clean_body(res1.body) |
256 | 260 |
|
257 | 261 | res2 = rreq.get('/', 'HTTP_COOKIE' => cookie)
|
258 | 262 | new_cookie = res2['Set-Cookie']
|
259 | 263 | new_session = new_cookie[session_match]
|
260 | 264 |
|
261 | 265 | refute_equal session, new_session
|
262 |
| - assert_equal '{"counter"=>2}', res2.body |
| 266 | + assert_equal '{"counter"=>2}', clean_body(res2.body) |
263 | 267 |
|
264 | 268 | res3 = req.get('/', 'HTTP_COOKIE' => new_cookie)
|
265 | 269 |
|
266 |
| - assert_equal '{"counter"=>3}', res3.body |
| 270 | + assert_equal '{"counter"=>3}', clean_body(res3.body) |
267 | 271 |
|
268 | 272 | # Old cookie was deleted
|
269 | 273 | res4 = req.get('/', 'HTTP_COOKIE' => cookie)
|
270 | 274 |
|
271 |
| - assert_equal '{"counter"=>1}', res4.body |
| 275 | + assert_equal '{"counter"=>1}', clean_body(res4.body) |
272 | 276 | end
|
273 | 277 |
|
274 | 278 | it 'omits cookie with :defer option but still updates the state' do
|
|
281 | 285 | res0 = dreq.get('/')
|
282 | 286 |
|
283 | 287 | assert_nil res0['Set-Cookie']
|
284 |
| - assert_equal '{"counter"=>1}', res0.body |
| 288 | + assert_equal '{"counter"=>1}', clean_body(res0.body) |
285 | 289 |
|
286 | 290 | res0 = creq.get('/')
|
287 | 291 | res1 = dreq.get('/', 'HTTP_COOKIE' => res0['Set-Cookie'])
|
288 | 292 |
|
289 |
| - assert_equal '{"counter"=>2}', res1.body |
| 293 | + assert_equal '{"counter"=>2}', clean_body(res1.body) |
290 | 294 | res2 = dreq.get('/', 'HTTP_COOKIE' => res0['Set-Cookie'])
|
291 | 295 |
|
292 |
| - assert_equal '{"counter"=>3}', res2.body |
| 296 | + assert_equal '{"counter"=>3}', clean_body(res2.body) |
293 | 297 | end
|
294 | 298 |
|
295 | 299 | it 'omits cookie and state update with :skip option' do
|
|
302 | 306 | res0 = sreq.get('/')
|
303 | 307 |
|
304 | 308 | assert_nil res0['Set-Cookie']
|
305 |
| - assert_equal '{"counter"=>1}', res0.body |
| 309 | + assert_equal '{"counter"=>1}', clean_body(res0.body) |
306 | 310 |
|
307 | 311 | res0 = creq.get('/')
|
308 | 312 | res1 = sreq.get('/', 'HTTP_COOKIE' => res0['Set-Cookie'])
|
309 | 313 |
|
310 |
| - assert_equal '{"counter"=>2}', res1.body |
| 314 | + assert_equal '{"counter"=>2}', clean_body(res1.body) |
311 | 315 | res2 = sreq.get('/', 'HTTP_COOKIE' => res0['Set-Cookie'])
|
312 | 316 |
|
313 |
| - assert_equal '{"counter"=>2}', res2.body |
| 317 | + assert_equal '{"counter"=>2}', clean_body(res2.body) |
314 | 318 | end
|
315 | 319 |
|
316 | 320 | it 'updates deep hashes correctly' do
|
|
332 | 336 | ses0 = JSON.parse(res0.body)
|
333 | 337 |
|
334 | 338 | refute_nil ses0
|
335 |
| - assert_equal '{"a"=>"b", "c"=>{"d"=>"e"}, "f"=>{"g"=>{"h"=>"i"}}, "test"=>true}', ses0.to_s |
| 339 | + assert_equal '{"a"=>"b", "c"=>{"d"=>"e"}, "f"=>{"g"=>{"h"=>"i"}}, "test"=>true}', clean_body(ses0.to_s) |
336 | 340 |
|
337 | 341 | res1 = req.get('/', 'HTTP_COOKIE' => cookie)
|
338 | 342 | ses1 = JSON.parse(res1.body)
|
339 | 343 |
|
340 | 344 | refute_nil ses1
|
341 |
| - assert_equal '{"a"=>"b", "c"=>{"d"=>"e"}, "f"=>{"g"=>{"h"=>"j"}}, "test"=>true}', ses1.to_s |
| 345 | + assert_equal '{"a"=>"b", "c"=>{"d"=>"e"}, "f"=>{"g"=>{"h"=>"j"}}, "test"=>true}', clean_body(ses1.to_s) |
342 | 346 |
|
343 | 347 | refute_equal ses0, ses1
|
344 | 348 | end
|
|
0 commit comments