Skip to content

Commit fa10335

Browse files
alexpantyukhinasvetlov
authored andcommitted
add checking for session expired (#297)
1 parent 6ae6c60 commit fa10335

File tree

3 files changed

+80
-2
lines changed

3 files changed

+80
-2
lines changed

tests/test_memcached_storage.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import uuid
33
import time
4+
import asyncio
45

56
from aiohttp import web
67
from aiohttp_session import Session, session_middleware, get_session
@@ -227,3 +228,28 @@ async def logout(request):
227228
client.session.cookie_jar.update_cookies({'AIOHTTP_SESSION': evil_cookie})
228229
resp = await client.get('/')
229230
assert resp.cookies['AIOHTTP_SESSION'].value != evil_cookie
231+
232+
233+
async def test_load_session_dont_load_expired_session(aiohttp_client,
234+
memcached):
235+
async def handler(request):
236+
session = await get_session(request)
237+
exp_param = request.rel_url.query.get('exp', None)
238+
if exp_param is None:
239+
session['a'] = 1
240+
session['b'] = 2
241+
else:
242+
assert {} == session
243+
244+
return web.Response(body=b'OK')
245+
246+
client = await aiohttp_client(
247+
create_app(handler, memcached, 2)
248+
)
249+
resp = await client.get('/')
250+
assert resp.status == 200
251+
252+
await asyncio.sleep(5)
253+
254+
resp = await client.get('/?exp=yes')
255+
assert resp.status == 200

tests/test_nacl_storage.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22
import time
3+
import asyncio
34

45
import pytest
56
import nacl.secret
@@ -30,8 +31,8 @@ def make_cookie(client, secretbox, data):
3031
client.session.cookie_jar.update_cookies({'AIOHTTP_SESSION': data})
3132

3233

33-
def create_app(handler, key):
34-
middleware = session_middleware(NaClCookieStorage(key))
34+
def create_app(handler, key, max_age=None):
35+
middleware = session_middleware(NaClCookieStorage(key, max_age=max_age))
3536
app = web.Application(middlewares=[middleware])
3637
app.router.add_route('GET', '/', handler)
3738
return app
@@ -153,3 +154,28 @@ async def logout(request):
153154
client.session.cookie_jar.update_cookies({'AIOHTTP_SESSION': evil_cookie})
154155
resp = await client.get('/')
155156
assert resp.cookies['AIOHTTP_SESSION'].value != evil_cookie
157+
158+
159+
async def test_load_session_dont_load_expired_session(aiohttp_client,
160+
key):
161+
async def handler(request):
162+
session = await get_session(request)
163+
exp_param = request.rel_url.query.get('exp', None)
164+
if exp_param is None:
165+
session['a'] = 1
166+
session['b'] = 2
167+
else:
168+
assert {} == session
169+
170+
return web.Response(body=b'OK')
171+
172+
client = await aiohttp_client(
173+
create_app(handler, key, 2)
174+
)
175+
resp = await client.get('/')
176+
assert resp.status == 200
177+
178+
await asyncio.sleep(5)
179+
180+
resp = await client.get('/?exp=yes')
181+
assert resp.status == 200

tests/test_redis_storage.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pytest
44
import uuid
55
import time
6+
import asyncio
67

78
from aiohttp import web
89
from aiohttp_session import Session, session_middleware, get_session
@@ -310,3 +311,28 @@ def __init__(self, *args, **kwargs):
310311
mocker.patch('aiohttp_session.redis_storage.StrictVersion', Dummy)
311312
with pytest.raises(RuntimeError):
312313
create_app(handler=handler, redis=None)
314+
315+
316+
async def test_load_session_dont_load_expired_session(aiohttp_client,
317+
redis):
318+
async def handler(request):
319+
session = await get_session(request)
320+
exp_param = request.rel_url.query.get('exp', None)
321+
if exp_param is None:
322+
session['a'] = 1
323+
session['b'] = 2
324+
else:
325+
assert {} == session
326+
327+
return web.Response(body=b'OK')
328+
329+
client = await aiohttp_client(
330+
create_app(handler, redis, 2)
331+
)
332+
resp = await client.get('/')
333+
assert resp.status == 200
334+
335+
await asyncio.sleep(5)
336+
337+
resp = await client.get('/?exp=yes')
338+
assert resp.status == 200

0 commit comments

Comments
 (0)