Skip to content

Commit 4af6595

Browse files
Merge pull request #789 from eaguad1337/fix/768
Fixes add_query_params on str.py
2 parents da7f7f7 + 4dee815 commit 4af6595

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/masonite/utils/str.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,18 @@ def add_query_params(url: str, query_params: dict) -> str:
8080
"""Add query params dict to a given url (which can already contain some query parameters)."""
8181
path_result = parse.urlsplit(url)
8282

83-
base_url = path_result.path
83+
base_url = f"{path_result.scheme}://{path_result.hostname}" if path_result.hostname else ""
84+
base_path = path_result.path
8485

8586
# parse existing query parameters if any
8687
existing_query_params = dict(parse.parse_qsl(path_result.query))
8788
all_query_params = {**existing_query_params, **query_params}
8889

8990
# add query parameters to url if any
9091
if all_query_params:
91-
base_url += "?" + parse.urlencode(all_query_params)
92+
base_path += "?" + parse.urlencode(all_query_params)
9293

93-
return base_url
94+
return f"{base_url}{base_path}"
9495

9596

9697
def get_controller_name(controller: "str|Any") -> str:

tests/core/response/test_response_redirections.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,13 @@ def test_redirect_to_url(self):
3434
self.assertEqual(
3535
self.response.header_bag.get("Location").value, "/login?key=value"
3636
)
37+
38+
def test_redirect_to_external_url(self):
39+
self.response.redirect(url="https://google.cl/login")
40+
self.assertEqual(self.response.get_status(), 302)
41+
self.assertEqual(self.response.header_bag.get("Location").value, "https://google.cl/login")
42+
43+
self.response.redirect(url="https://google.cl/login", query_params={"key": "value"})
44+
self.assertEqual(
45+
self.response.header_bag.get("Location").value, "https://google.cl/login?key=value"
46+
)

0 commit comments

Comments
 (0)