fix url encoding in the param part (#2520)
This commit is contained in:
@@ -65,4 +65,5 @@ def encode_url(url: str) -> str:
|
|||||||
parts = list(urlsplit(url))
|
parts = list(urlsplit(url))
|
||||||
# Encode the path while preserving "/" and "%"
|
# Encode the path while preserving "/" and "%"
|
||||||
parts[2] = quote(parts[2], safe="/%")
|
parts[2] = quote(parts[2], safe="/%")
|
||||||
|
parts[3] = quote(parts[3], safe="=&/%")
|
||||||
return urlunsplit(parts)
|
return urlunsplit(parts)
|
||||||
|
|||||||
0
tests/unit_tests/__init__.py
Normal file
0
tests/unit_tests/__init__.py
Normal file
29
tests/unit_tests/test_url_validators.py
Normal file
29
tests/unit_tests/test_url_validators.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
from skyvern.utils.url_validators import encode_url
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_url_basic():
|
||||||
|
"""Test basic URL encoding with simple path"""
|
||||||
|
url = "https://example.com/path with spaces"
|
||||||
|
expected = "https://example.com/path%20with%20spaces"
|
||||||
|
assert encode_url(url) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_url_with_query_params():
|
||||||
|
"""Test URL encoding with query parameters"""
|
||||||
|
url = "https://example.com/search?q=hello world&type=test"
|
||||||
|
expected = "https://example.com/search?q=hello%20world&type=test"
|
||||||
|
assert encode_url(url) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_url_with_special_chars():
|
||||||
|
"""Test URL encoding with special characters"""
|
||||||
|
url = "https://example.com/path/with/special#chars?param=value&other=test@123"
|
||||||
|
expected = "https://example.com/path/with/special#chars?param=value&other=test@123"
|
||||||
|
assert encode_url(url) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_url_with_pre_encoded_chars():
|
||||||
|
"""Test URL encoding with pre-encoded characters in query parameters"""
|
||||||
|
url = "https://example.com/search?q=hello world&type=test%20test"
|
||||||
|
expected = "https://example.com/search?q=hello%20world&type=test%20test"
|
||||||
|
assert encode_url(url) == expected
|
||||||
Reference in New Issue
Block a user