Browse Source

set session accessed for setdefault

pull/2288/head
David Lord 8 years ago
parent
commit
5d9dd0b379
No known key found for this signature in database
GPG Key ID: 7A1C87E3F5BC42A8
  1. 5
      flask/sessions.py
  2. 38
      tests/test_basic.py

5
flask/sessions.py

@ -138,6 +138,11 @@ class SecureCookieSession(CallbackDict, SessionMixin):
self.accessed = True self.accessed = True
return super(SecureCookieSession, self).get(key, default) return super(SecureCookieSession, self).get(key, default)
def setdefault(self, key, default=None):
self.accessed = True
return super(SecureCookieSession, self).setdefault(key, default)
class NullSession(SecureCookieSession): class NullSession(SecureCookieSession):
"""Class used to generate nicer error messages if sessions are not """Class used to generate nicer error messages if sessions are not
available. Will still allow read-only access to the empty session available. Will still allow read-only access to the empty session

38
tests/test_basic.py

@ -533,20 +533,22 @@ def test_session_vary_cookie():
app = flask.Flask(__name__) app = flask.Flask(__name__)
app.secret_key = 'testkey' app.secret_key = 'testkey'
@app.route('/set-session') @app.route('/set')
def set_session(): def set_session():
flask.session['test'] = 'test' flask.session['test'] = 'test'
return '' return ''
@app.route('/get-session') @app.route('/get')
def get_session(): def get():
s = flask.session.get('test') return flask.session.get('test')
return ''
@app.route('/get-session-with-dictionary') @app.route('/getitem')
def get_session_with_dictionary(): def getitem():
s = flask.session['test'] return flask.session['test']
return ''
@app.route('/setdefault')
def setdefault():
return flask.session.setdefault('test', 'default')
@app.route('/no-vary-header') @app.route('/no-vary-header')
def no_vary_header(): def no_vary_header():
@ -554,18 +556,20 @@ def test_session_vary_cookie():
c = app.test_client() c = app.test_client()
rv = c.get('/set-session') def expect(path, header=True):
assert rv.headers['Vary'] == 'Cookie' rv = c.get(path)
rv = c.get('/get-session') if header:
assert rv.headers['Vary'] == 'Cookie' assert rv.headers['Vary'] == 'Cookie'
else:
rv = c.get('/get-session-with-dictionary')
assert rv.headers['Vary'] == 'Cookie'
rv = c.get('/no-vary-header')
assert 'Vary' not in rv.headers assert 'Vary' not in rv.headers
expect('/set')
expect('/get')
expect('/getitem')
expect('/setdefault')
expect('/no-vary-header', False)
def test_flashes(): def test_flashes():
app = flask.Flask(__name__) app = flask.Flask(__name__)

Loading…
Cancel
Save