-
-
Notifications
You must be signed in to change notification settings - Fork 16.7k
Closed
Milestone
Description
I'm trying to add default headers to Flask's test client requests by overriding FlaskClient.open. When following redirects, the second request raises an error that an EnvironBuilder instance is being passed to url_parse.
Expected Behavior
from flask import Flask, redirect, url_for
from flask.testing import FlaskClient
app = Flask(__name__)
class CustomClient(FlaskClient):
def open(self, *args, **kwargs):
kwargs["headers"] = {"Extra-Key": "extra value"}
return super().open(*args, **kwargs)
@app.route("/")
def home():
return redirect(url_for("test"))
@app.route("/test")
def test():
return "Hello, World!"
app.test_client_class = CustomClient
c = app.test_client()
rv = c.get("/", follow_redirects=True)
print(rv.data)Actual Behavior
Traceback (most recent call last):
File "/home/david/Projects/flask/example.py", line 21, in <module>
rv = c.get("/", follow_redirects=True)
File "/home/david/.virtualenvs/flask/lib/python3.8/site-packages/werkzeug/test.py", line 1029, in get
return self.open(*args, **kw)
File "/home/david/Projects/flask/example.py", line 9, in open
return super().open(*args, **kwargs)
File "/home/david/Projects/flask/src/flask/testing.py", line 222, in open
return Client.open(
File "/home/david/.virtualenvs/flask/lib/python3.8/site-packages/werkzeug/test.py", line 1016, in open
environ, response = self.resolve_redirect(
File "/home/david/.virtualenvs/flask/lib/python3.8/site-packages/werkzeug/test.py", line 948, in resolve_redirect
return self.open(builder, as_tuple=True, buffered=buffered)
File "/home/david/Projects/flask/example.py", line 9, in open
return super().open(*args, **kwargs)
File "/home/david/Projects/flask/src/flask/testing.py", line 215, in open
builder = EnvironBuilder(self.application, *args, **kwargs)
File "/home/david/Projects/flask/src/flask/testing.py", line 73, in __init__
url = url_parse(path)
File "/home/david/.virtualenvs/flask/lib/python3.8/site-packages/werkzeug/urls.py", line 457, in url_parse
i = url.find(s(":"))
AttributeError: 'EnvironBuilder' object has no attribute 'find'Environment
- Python version: 3.6.9
- Flask version: 1.1.1
- Werkzeug version: 0.16.0
Metadata
Metadata
Assignees
Labels
No labels