-
Notifications
You must be signed in to change notification settings - Fork 23
/
test_middleware.py
63 lines (44 loc) · 1.83 KB
/
test_middleware.py
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
import pytest
from freezegun import freeze_time
from django_session_timeout.middleware import SESSION_TIMEOUT_KEY
from django.contrib.sessions.middleware import SessionMiddleware
from django_session_timeout.middleware import SessionTimeoutMiddleware
@pytest.fixture(scope='function')
def r(rf):
req = rf.get('/')
middleware = SessionMiddleware()
middleware.process_request(req)
req.session['example_key'] = '1'
req.session.save()
yield req
def test_session_new(r):
middleware = SessionTimeoutMiddleware()
assert middleware.process_request(r) is None
assert r.session[SESSION_TIMEOUT_KEY]
def test_session_new_empty_session(r):
r.session.flush()
middleware = SessionTimeoutMiddleware()
assert middleware.process_request(r) is None
assert SESSION_TIMEOUT_KEY not in r.session
def test_session_expire(r, settings):
settings.SESSION_EXPIRE_SECONDS = 3600
middleware = SessionTimeoutMiddleware()
with freeze_time('2017-08-31 21:46:00'):
assert middleware.process_request(r) is None
with freeze_time('2017-08-31 22:45:00'):
assert middleware.process_request(r) is None
with freeze_time('2017-08-31 22:46:01'):
response = middleware.process_request(r)
assert SESSION_TIMEOUT_KEY not in r.session
assert response['location'] == '/'
def test_session_expire_no_expire_setting(r, settings):
settings.SESSION_COOKIE_AGE = 3600
middleware = SessionTimeoutMiddleware()
with freeze_time('2017-08-31 21:46:00'):
assert middleware.process_request(r) is None
with freeze_time('2017-08-31 22:45:00'):
assert middleware.process_request(r) is None
with freeze_time('2017-08-31 22:46:01'):
response = middleware.process_request(r)
assert SESSION_TIMEOUT_KEY not in r.session
assert response['location'] == '/'