|
3 | 3 | import json |
4 | 4 | from unittest import mock |
5 | 5 | from unittest.mock import Mock |
| 6 | +from urllib.parse import parse_qs, urlparse |
6 | 7 |
|
7 | 8 | import pytest |
8 | 9 |
|
@@ -128,6 +129,40 @@ async def test_dataset_public_url_async(api_url: str, api_public_url: str | None |
128 | 129 | ) |
129 | 130 |
|
130 | 131 |
|
| 132 | +def test_dataset_public_url_normalizes_params_sync() -> None: |
| 133 | + """Bool and list query params must be API-normalized (bool→true/false, list→comma-joined), not Python reprs.""" |
| 134 | + client = ApifyClient(token='dummy-token', api_url='https://api.apify.com') |
| 135 | + dataset = client.dataset('someID') |
| 136 | + |
| 137 | + mock_response = Mock() |
| 138 | + mock_response.json.return_value = json.loads(MOCKED_DATASET_RESPONSE) |
| 139 | + |
| 140 | + with mock.patch.object(client._http_client, 'call', return_value=mock_response): |
| 141 | + public_url = dataset.create_items_public_url(clean=True, desc=False, fields=['title', 'url']) |
| 142 | + |
| 143 | + query = parse_qs(urlparse(public_url).query) |
| 144 | + assert query['clean'] == ['true'] |
| 145 | + assert query['desc'] == ['false'] |
| 146 | + assert query['fields'] == ['title,url'] |
| 147 | + |
| 148 | + |
| 149 | +async def test_dataset_public_url_normalizes_params_async() -> None: |
| 150 | + """Bool and list query params must be API-normalized (bool→true/false, list→comma-joined), not Python reprs.""" |
| 151 | + client = ApifyClientAsync(token='dummy-token', api_url='https://api.apify.com') |
| 152 | + dataset = client.dataset('someID') |
| 153 | + |
| 154 | + mock_response = Mock() |
| 155 | + mock_response.json.return_value = json.loads(MOCKED_DATASET_RESPONSE) |
| 156 | + |
| 157 | + with mock.patch.object(client._http_client, 'call', return_value=mock_response): |
| 158 | + public_url = await dataset.create_items_public_url(clean=True, desc=False, fields=['title', 'url']) |
| 159 | + |
| 160 | + query = parse_qs(urlparse(public_url).query) |
| 161 | + assert query['clean'] == ['true'] |
| 162 | + assert query['desc'] == ['false'] |
| 163 | + assert query['fields'] == ['title,url'] |
| 164 | + |
| 165 | + |
131 | 166 | # ============================================================================ |
132 | 167 | # Key-value store URL generation tests |
133 | 168 | # ============================================================================ |
|
0 commit comments