Bug fix for host parameter issue with lists (#1776)
* Bug fix for host parameter issue with lists As explained in #1772 there is an issue when using a list as an argument for the host parameter in the Blueprint.route() decorator. I've traced the issue back to this line, and the if conditional should ensure that the name attribute isn't accessed when route is None. * Unit tests for blueprint.route host paramter set to list. Co-authored-by: Adam Hopkins <admhpkns@gmail.com>
This commit is contained in:
parent
d81096fdc0
commit
cf9ccdae47
|
@ -143,7 +143,7 @@ class Blueprint:
|
||||||
if _routes:
|
if _routes:
|
||||||
routes += _routes
|
routes += _routes
|
||||||
|
|
||||||
route_names = [route.name for route in routes]
|
route_names = [route.name for route in routes if route]
|
||||||
# Middleware
|
# Middleware
|
||||||
for future in self.middlewares:
|
for future in self.middlewares:
|
||||||
if future.args or future.kwargs:
|
if future.args or future.kwargs:
|
||||||
|
|
|
@ -252,6 +252,76 @@ def test_several_bp_with_host(app):
|
||||||
assert response.text == "Hello3"
|
assert response.text == "Hello3"
|
||||||
|
|
||||||
|
|
||||||
|
def test_bp_with_host_list(app):
|
||||||
|
bp = Blueprint("test_bp_host", url_prefix="/test1", host=["example.com", "sub.example.com"])
|
||||||
|
|
||||||
|
@bp.route("/")
|
||||||
|
def handler1(request):
|
||||||
|
return text("Hello")
|
||||||
|
|
||||||
|
@bp.route("/", host=["sub1.example.com"])
|
||||||
|
def handler2(request):
|
||||||
|
return text("Hello subdomain!")
|
||||||
|
|
||||||
|
app.blueprint(bp)
|
||||||
|
headers = {"Host": "example.com"}
|
||||||
|
request, response = app.test_client.get("/test1/", headers=headers)
|
||||||
|
assert response.text == "Hello"
|
||||||
|
|
||||||
|
headers = {"Host": "sub.example.com"}
|
||||||
|
request, response = app.test_client.get("/test1/", headers=headers)
|
||||||
|
assert response.text == "Hello"
|
||||||
|
|
||||||
|
headers = {"Host": "sub1.example.com"}
|
||||||
|
request, response = app.test_client.get("/test1/", headers=headers)
|
||||||
|
|
||||||
|
assert response.text == "Hello subdomain!"
|
||||||
|
|
||||||
|
|
||||||
|
def test_several_bp_with_host_list(app):
|
||||||
|
bp = Blueprint("test_text", url_prefix="/test", host=["example.com", "sub.example.com"])
|
||||||
|
bp2 = Blueprint("test_text2", url_prefix="/test", host=["sub1.example.com", "sub2.example.com"])
|
||||||
|
|
||||||
|
@bp.route("/")
|
||||||
|
def handler(request):
|
||||||
|
return text("Hello")
|
||||||
|
|
||||||
|
@bp2.route("/")
|
||||||
|
def handler1(request):
|
||||||
|
return text("Hello2")
|
||||||
|
|
||||||
|
@bp2.route("/other/")
|
||||||
|
def handler2(request):
|
||||||
|
return text("Hello3")
|
||||||
|
|
||||||
|
app.blueprint(bp)
|
||||||
|
app.blueprint(bp2)
|
||||||
|
|
||||||
|
assert bp.host == ["example.com", "sub.example.com"]
|
||||||
|
headers = {"Host": "example.com"}
|
||||||
|
request, response = app.test_client.get("/test/", headers=headers)
|
||||||
|
assert response.text == "Hello"
|
||||||
|
|
||||||
|
assert bp.host == ["example.com", "sub.example.com"]
|
||||||
|
headers = {"Host": "sub.example.com"}
|
||||||
|
request, response = app.test_client.get("/test/", headers=headers)
|
||||||
|
assert response.text == "Hello"
|
||||||
|
|
||||||
|
assert bp2.host == ["sub1.example.com", "sub2.example.com"]
|
||||||
|
headers = {"Host": "sub1.example.com"}
|
||||||
|
request, response = app.test_client.get("/test/", headers=headers)
|
||||||
|
assert response.text == "Hello2"
|
||||||
|
request, response = app.test_client.get("/test/other/", headers=headers)
|
||||||
|
assert response.text == "Hello3"
|
||||||
|
|
||||||
|
assert bp2.host == ["sub1.example.com", "sub2.example.com"]
|
||||||
|
headers = {"Host": "sub2.example.com"}
|
||||||
|
request, response = app.test_client.get("/test/", headers=headers)
|
||||||
|
assert response.text == "Hello2"
|
||||||
|
request, response = app.test_client.get("/test/other/", headers=headers)
|
||||||
|
assert response.text == "Hello3"
|
||||||
|
|
||||||
|
|
||||||
def test_bp_middleware(app):
|
def test_bp_middleware(app):
|
||||||
blueprint = Blueprint("test_bp_middleware")
|
blueprint = Blueprint("test_bp_middleware")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user