Convert make_test_environ_builder into class (fixes #3207)

This commit is contained in:
Daniel Pope 2019-05-31 15:49:23 +01:00
parent 91e53da054
commit 976dfedaa9
4 changed files with 99 additions and 48 deletions

View file

@ -243,9 +243,9 @@ def test_bad_environ_raises_bad_request():
# because werkzeug enforces latin1 on Python 2.
# However it works when actually passed to the server.
from flask.testing import make_test_environ_builder
from flask.testing import EnvironBuilder
builder = make_test_environ_builder(app)
builder = EnvironBuilder(app)
environ = builder.get_environ()
# use a non-printable character in the Host - this is key to this test
@ -267,9 +267,9 @@ def test_environ_for_valid_idna_completes():
# because werkzeug enforces latin1 on Python 2.
# However it works when actually passed to the server.
from flask.testing import make_test_environ_builder
from flask.testing import EnvironBuilder
builder = make_test_environ_builder(app)
builder = EnvironBuilder(app)
environ = builder.get_environ()
# these characters are all IDNA-compatible

View file

@ -18,7 +18,7 @@ from flask import appcontext_popped
from flask._compat import text_type
from flask.cli import ScriptInfo
from flask.json import jsonify
from flask.testing import make_test_environ_builder, FlaskCliRunner
from flask.testing import make_test_environ_builder, FlaskCliRunner, EnvironBuilder
try:
import blinker
@ -88,7 +88,7 @@ def test_client_open_environ(app, client, request):
def index():
return flask.request.remote_addr
builder = make_test_environ_builder(app, path="/index", method="GET")
builder = EnvironBuilder(app, path="/index", method="GET")
request.addfinalizer(builder.close)
rv = client.open(builder)
@ -113,13 +113,34 @@ def test_specify_url_scheme(app, client):
def test_path_is_url(app):
eb = make_test_environ_builder(app, "https://example.com/")
eb = EnvironBuilder(app, "https://example.com/")
assert eb.url_scheme == "https"
assert eb.host == "example.com"
assert eb.script_root == ""
assert eb.path == "/"
def test_make_test_environ_builder(app):
with pytest.deprecated_call():
eb = make_test_environ_builder(app, "https://example.com/")
assert eb.url_scheme == "https"
assert eb.host == "example.com"
assert eb.script_root == ""
assert eb.path == "/"
def test_environbuilder_json_dumps(app):
"""EnvironBuilder.json_dumps() takes settings from the app."""
app.config["JSON_AS_ASCII"] = False
eb = EnvironBuilder(app, json=u"\u20ac")
assert eb.input_stream.read().decode("utf8") == u'"\u20ac"'
def test_environbuilder_json_dumps_static():
"""EnvironBuilder.json_dumps() can be called as a static method."""
assert EnvironBuilder.json_dumps(u"\u20ac") == u'"\\u20ac"'
def test_blueprint_with_subdomain():
app = flask.Flask(__name__, subdomain_matching=True)
app.config["SERVER_NAME"] = "example.com:1234"