Skip to content

Commit aa896b8

Browse files
author
Samson Gebre
committed
fix: update SQL parameter extraction to use URL parsing in query SQL tests
1 parent 2f22009 commit aa896b8

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

tests/unit/data/test_select_star_expansion.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import pytest
77
from unittest.mock import MagicMock
8+
from urllib.parse import parse_qs, urlparse
89

910
from PowerPlatform.Dataverse.data._odata import _ODataClient
1011

@@ -210,7 +211,8 @@ def test_query_sql_expands_select_star(self):
210211
c._list_columns.assert_called_once()
211212
# Verify the SQL sent to server has explicit columns, not *
212213
call_args = c._request.call_args
213-
sent_sql = call_args[1]["params"]["sql"] if "params" in call_args[1] else call_args[0][2]["sql"]
214+
sent_url = call_args[0][1]
215+
sent_sql = parse_qs(urlparse(sent_url).query)["sql"][0]
214216
assert "*" not in sent_sql or "COUNT(*)" in sent_sql
215217
assert "accountid" in sent_sql
216218
assert "name" in sent_sql

tests/unit/data/test_sql_guardrails.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import pytest
99
from unittest.mock import MagicMock
10+
from urllib.parse import parse_qs, urlparse
1011

1112
from PowerPlatform.Dataverse.core.errors import ValidationError
1213
from PowerPlatform.Dataverse.data._odata import _ODataClient
@@ -363,8 +364,8 @@ def test_no_top_injection_in_server_request(self):
363364
c._query_sql("SELECT name FROM account")
364365

365366
call_args = c._request.call_args
366-
sent_params = call_args[1].get("params", {})
367-
sent_sql = sent_params.get("sql", "")
367+
sent_url = call_args[0][1]
368+
sent_sql = parse_qs(urlparse(sent_url).query)["sql"][0]
368369
# SDK should NOT inject TOP 5000
369370
assert "TOP 5000" not in sent_sql
370371
assert sent_sql == "SELECT name FROM account"
@@ -380,6 +381,6 @@ def test_explicit_top_preserved_in_server_request(self):
380381
c._query_sql("SELECT TOP 50 name FROM account")
381382

382383
call_args = c._request.call_args
383-
sent_params = call_args[1].get("params", {})
384-
sent_sql = sent_params.get("sql", "")
384+
sent_url = call_args[0][1]
385+
sent_sql = parse_qs(urlparse(sent_url).query)["sql"][0]
385386
assert "TOP 50" in sent_sql

0 commit comments

Comments
 (0)