From e7c587789ae22a626196cea26340253dd9b70bf1 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Sat, 8 Feb 2014 17:19:00 +0000 Subject: [PATCH] Fixe a bug in the test client causing url parameters to be removed. This fixes #968 --- CHANGES | 2 ++ flask/testing.py | 2 ++ flask/testsuite/testing.py | 14 ++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/CHANGES b/CHANGES index 1a5d697e..656b9356 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,8 @@ Version 0.10.2 without an `is_package()` method. - Fixed an issue causing exceptions raised before entering a request or app context to be passed to teardown handlers. +- Fixed an issue with query parameters getting removed from requests in + the test client when absolute URLs were requested. Version 0.10.1 -------------- diff --git a/flask/testing.py b/flask/testing.py index 8f28f77b..6351462b 100644 --- a/flask/testing.py +++ b/flask/testing.py @@ -31,6 +31,8 @@ def make_test_environ_builder(app, path='/', base_url=None, *args, **kwargs): base_url += app_root.lstrip('/') if url.netloc: path = url.path + if url.query: + path += '?' + url.query return EnvironBuilder(path, base_url, *args, **kwargs) diff --git a/flask/testsuite/testing.py b/flask/testsuite/testing.py index 3aa9e688..609f3a94 100644 --- a/flask/testsuite/testing.py +++ b/flask/testsuite/testing.py @@ -196,6 +196,20 @@ class TestToolsTestCase(FlaskTestCase): self.assert_equal(called, [None]) self.assert_equal(called, [None, None]) + def test_full_url_request(self): + app = flask.Flask(__name__) + app.testing = True + + @app.route('/action', methods=['POST']) + def action(): + return 'x' + + with app.test_client() as c: + rv = c.post('http://domain.com/action?vodka=42', data={'gin': 43}) + self.assert_equal(rv.status_code, 200) + self.assert_('gin' in flask.request.form) + self.ssert_('vodka' in flask.request.args) + class SubdomainTestCase(FlaskTestCase):