Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/websdk/flask/testsuite/testing.py
diff options
context:
space:
mode:
Diffstat (limited to 'websdk/flask/testsuite/testing.py')
-rw-r--r--websdk/flask/testsuite/testing.py171
1 files changed, 171 insertions, 0 deletions
diff --git a/websdk/flask/testsuite/testing.py b/websdk/flask/testsuite/testing.py
new file mode 100644
index 0000000..6574e77
--- /dev/null
+++ b/websdk/flask/testsuite/testing.py
@@ -0,0 +1,171 @@
+# -*- coding: utf-8 -*-
+"""
+ flask.testsuite.testing
+ ~~~~~~~~~~~~~~~~~~~~~~~
+
+ Test client and more.
+
+ :copyright: (c) 2011 by Armin Ronacher.
+ :license: BSD, see LICENSE for more details.
+"""
+
+from __future__ import with_statement
+
+import flask
+import unittest
+from flask.testsuite import FlaskTestCase
+
+
+class TestToolsTestCase(FlaskTestCase):
+
+ def test_environ_defaults_from_config(self):
+ app = flask.Flask(__name__)
+ app.testing = True
+ app.config['SERVER_NAME'] = 'example.com:1234'
+ app.config['APPLICATION_ROOT'] = '/foo'
+ @app.route('/')
+ def index():
+ return flask.request.url
+
+ ctx = app.test_request_context()
+ self.assert_equal(ctx.request.url, 'http://example.com:1234/foo/')
+ with app.test_client() as c:
+ rv = c.get('/')
+ self.assert_equal(rv.data, 'http://example.com:1234/foo/')
+
+ def test_environ_defaults(self):
+ app = flask.Flask(__name__)
+ app.testing = True
+ @app.route('/')
+ def index():
+ return flask.request.url
+
+ ctx = app.test_request_context()
+ self.assert_equal(ctx.request.url, 'http://localhost/')
+ with app.test_client() as c:
+ rv = c.get('/')
+ self.assert_equal(rv.data, 'http://localhost/')
+
+ def test_session_transactions(self):
+ app = flask.Flask(__name__)
+ app.testing = True
+ app.secret_key = 'testing'
+
+ @app.route('/')
+ def index():
+ return unicode(flask.session['foo'])
+
+ with app.test_client() as c:
+ with c.session_transaction() as sess:
+ self.assert_equal(len(sess), 0)
+ sess['foo'] = [42]
+ self.assert_equal(len(sess), 1)
+ rv = c.get('/')
+ self.assert_equal(rv.data, '[42]')
+ with c.session_transaction() as sess:
+ self.assert_equal(len(sess), 1)
+ self.assert_equal(sess['foo'], [42])
+
+ def test_session_transactions_no_null_sessions(self):
+ app = flask.Flask(__name__)
+ app.testing = True
+
+ with app.test_client() as c:
+ try:
+ with c.session_transaction() as sess:
+ pass
+ except RuntimeError, e:
+ self.assert_('Session backend did not open a session' in str(e))
+ else:
+ self.fail('Expected runtime error')
+
+ def test_session_transactions_keep_context(self):
+ app = flask.Flask(__name__)
+ app.testing = True
+ app.secret_key = 'testing'
+
+ with app.test_client() as c:
+ rv = c.get('/')
+ req = flask.request._get_current_object()
+ with c.session_transaction():
+ self.assert_(req is flask.request._get_current_object())
+
+ def test_session_transaction_needs_cookies(self):
+ app = flask.Flask(__name__)
+ app.testing = True
+ c = app.test_client(use_cookies=False)
+ try:
+ with c.session_transaction() as s:
+ pass
+ except RuntimeError, e:
+ self.assert_('cookies' in str(e))
+ else:
+ self.fail('Expected runtime error')
+
+ def test_test_client_context_binding(self):
+ app = flask.Flask(__name__)
+ @app.route('/')
+ def index():
+ flask.g.value = 42
+ return 'Hello World!'
+
+ @app.route('/other')
+ def other():
+ 1/0
+
+ with app.test_client() as c:
+ resp = c.get('/')
+ self.assert_equal(flask.g.value, 42)
+ self.assert_equal(resp.data, 'Hello World!')
+ self.assert_equal(resp.status_code, 200)
+
+ resp = c.get('/other')
+ self.assert_(not hasattr(flask.g, 'value'))
+ self.assert_('Internal Server Error' in resp.data)
+ self.assert_equal(resp.status_code, 500)
+ flask.g.value = 23
+
+ try:
+ flask.g.value
+ except (AttributeError, RuntimeError):
+ pass
+ else:
+ raise AssertionError('some kind of exception expected')
+
+ def test_reuse_client(self):
+ app = flask.Flask(__name__)
+ c = app.test_client()
+
+ with c:
+ self.assert_equal(c.get('/').status_code, 404)
+
+ with c:
+ self.assert_equal(c.get('/').status_code, 404)
+
+ def test_test_client_calls_teardown_handlers(self):
+ app = flask.Flask(__name__)
+ called = []
+ @app.teardown_request
+ def remember(error):
+ called.append(error)
+
+ with app.test_client() as c:
+ self.assert_equal(called, [])
+ c.get('/')
+ self.assert_equal(called, [])
+ self.assert_equal(called, [None])
+
+ del called[:]
+ with app.test_client() as c:
+ self.assert_equal(called, [])
+ c.get('/')
+ self.assert_equal(called, [])
+ c.get('/')
+ self.assert_equal(called, [None])
+ self.assert_equal(called, [None, None])
+
+
+def suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestToolsTestCase))
+ return suite