From f65ea94fe6a23afc3f1cb12fbcd45486f0b8a409 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Tue, 8 Jul 2025 20:58:55 +0800 Subject: [PATCH] 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 --- .../unit_tests/core/helper/test_url_signer.py | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/api/tests/unit_tests/core/helper/test_url_signer.py b/api/tests/unit_tests/core/helper/test_url_signer.py index eb5ecc5a40..5af24777de 100644 --- a/api/tests/unit_tests/core/helper/test_url_signer.py +++ b/api/tests/unit_tests/core/helper/test_url_signer.py @@ -1,4 +1,5 @@ from unittest.mock import patch +from urllib.parse import parse_qs, urlparse import pytest @@ -36,11 +37,25 @@ class TestUrlSigner: signed_url = UrlSigner.get_signed_url(base_url, sign_key, prefix) - # Verify URL contains all required parameters - assert signed_url.startswith(base_url) - assert "timestamp=" in signed_url - assert "nonce=" in signed_url - assert "sign=" in signed_url + # Parse URL and verify structure + parsed = urlparse(signed_url) + assert f"{parsed.scheme}://{parsed.netloc}{parsed.path}" == base_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") def test_should_verify_valid_signature(self):