test: improve URL parsing in test_should_generate_complete_signed_url

- Replace string contains checks with proper URL parsing using urlparse and parse_qs
- Verify base URL structure is preserved after adding query parameters
- Validate query parameters exist, have single values, and are non-empty
- More robust testing that handles parameter order changes

Per QuantumGhost's review suggestion
pull/22030/head
Jason Young 11 months ago
parent 61cf31ae0c
commit f65ea94fe6

@ -1,4 +1,5 @@
from unittest.mock import patch from unittest.mock import patch
from urllib.parse import parse_qs, urlparse
import pytest import pytest
@ -36,11 +37,25 @@ class TestUrlSigner:
signed_url = UrlSigner.get_signed_url(base_url, sign_key, prefix) signed_url = UrlSigner.get_signed_url(base_url, sign_key, prefix)
# Verify URL contains all required parameters # Parse URL and verify structure
assert signed_url.startswith(base_url) parsed = urlparse(signed_url)
assert "timestamp=" in signed_url assert f"{parsed.scheme}://{parsed.netloc}{parsed.path}" == base_url
assert "nonce=" in signed_url
assert "sign=" in signed_url # Verify query parameters
query_params = parse_qs(parsed.query)
assert "timestamp" in query_params
assert "nonce" in query_params
assert "sign" in query_params
# Verify each parameter has exactly one value
assert len(query_params["timestamp"]) == 1
assert len(query_params["nonce"]) == 1
assert len(query_params["sign"]) == 1
# Verify parameter values are not empty
assert query_params["timestamp"][0]
assert query_params["nonce"][0]
assert query_params["sign"][0]
@patch("configs.dify_config.SECRET_KEY", "test-secret-key-12345") @patch("configs.dify_config.SECRET_KEY", "test-secret-key-12345")
def test_should_verify_valid_signature(self): def test_should_verify_valid_signature(self):

Loading…
Cancel
Save