Skip to content

Commit 71e72ff

Browse files
committed
fix(openapi): preserve falsy query parameter values
1 parent dec2182 commit 71e72ff

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

src/google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ def _prepare_request_params(
394394
if param_location == "path":
395395
path_params[original_k] = v
396396
elif param_location == "query":
397-
if v:
397+
if v is not None and v != "":
398398
query_params[original_k] = v
399399
elif param_location == "header":
400400
header_params[original_k] = v

tests/unittests/tools/openapi_tool/openapi_spec_parser/test_rest_api_tool.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,6 +1052,49 @@ def test_prepare_request_params_no_credential(
10521052
assert "param_name" in request_params["params"]
10531053
assert "empty_param" not in request_params["params"]
10541054

1055+
def test_prepare_request_params_preserves_falsy_query_parameter_values(
1056+
self,
1057+
sample_endpoint,
1058+
sample_auth_credential,
1059+
sample_auth_scheme,
1060+
sample_operation,
1061+
):
1062+
tool = RestApiTool(
1063+
name="test_tool",
1064+
description="Test Tool",
1065+
endpoint=sample_endpoint,
1066+
operation=sample_operation,
1067+
auth_credential=sample_auth_credential,
1068+
auth_scheme=sample_auth_scheme,
1069+
)
1070+
params = [
1071+
ApiParameter(
1072+
original_name="include_inactive",
1073+
py_name="include_inactive",
1074+
param_location="query",
1075+
param_schema=OpenAPISchema(type="boolean"),
1076+
),
1077+
ApiParameter(
1078+
original_name="page",
1079+
py_name="page",
1080+
param_location="query",
1081+
param_schema=OpenAPISchema(type="integer"),
1082+
),
1083+
ApiParameter(
1084+
original_name="empty_param",
1085+
py_name="empty_param",
1086+
param_location="query",
1087+
param_schema=OpenAPISchema(type="string"),
1088+
),
1089+
]
1090+
kwargs = {"include_inactive": False, "page": 0, "empty_param": ""}
1091+
1092+
request_params = tool._prepare_request_params(params, kwargs)
1093+
1094+
assert request_params["params"]["include_inactive"] is False
1095+
assert request_params["params"]["page"] == 0
1096+
assert "empty_param" not in request_params["params"]
1097+
10551098
@pytest.mark.parametrize(
10561099
"verify_input, expected_verify_in_call",
10571100
[

0 commit comments

Comments
 (0)