From 9c8f138a42aa43ee8177ed84df5946f8ef6d0c58 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Fri, 25 Nov 2011 21:08:19 +0100 Subject: [PATCH] Improved test coverage for the test client --- flask/testsuite/testing.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/flask/testsuite/testing.py b/flask/testsuite/testing.py index f9ee909b..1170b306 100644 --- a/flask/testsuite/testing.py +++ b/flask/testsuite/testing.py @@ -53,24 +53,32 @@ class TestToolsTestCase(FlaskTestCase): @app.route('/', methods=['GET', 'POST']) def index(): if flask.request.method == 'POST': - return flask.redirect('/redirect') + return flask.redirect('/getsession') flask.session['data'] = 'foo' return 'index' - @app.route('/redirect') - def redirect(): - return 'redirect' + @app.route('/getsession') + def get_session(): + return flask.session.get('data', '') with app.test_client() as c: - ctx = app.test_request_context() - ctx.push() + rv = c.get('/getsession') + assert rv.data == '' + rv = c.get('/') assert rv.data == 'index' assert flask.session.get('data') == 'foo' rv = c.post('/', data={}, follow_redirects=True) - assert rv.data == 'redirect' - assert flask.session.get('data') == 'foo' - ctx.pop() + assert rv.data == 'foo' + + # XXX: Currently the test client does not support + # keeping the context around if a redirect is followed. + # This would be nice to fix but right now the Werkzeug + # test client does not support that. + ##assert flask.session.get('data') == 'foo' + + rv = c.get('/getsession') + assert rv.data == 'foo' def test_session_transactions(self): app = flask.Flask(__name__) @@ -113,6 +121,7 @@ class TestToolsTestCase(FlaskTestCase): with app.test_client() as c: rv = c.get('/') req = flask.request._get_current_object() + self.assert_(req is not None) with c.session_transaction(): self.assert_(req is flask.request._get_current_object())