Skip to content

Commit f5e1acb

Browse files
committed
test(api-core): add branch coverage tests for rest_helpers to achieve 100% total branch coverage
1 parent 0cf2c72 commit f5e1acb

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

packages/google-api-core/google/api_core/rest_helpers.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,7 @@ def transcode_request(
180180
assert bound_fields is not None
181181
uri_template = matched_option.get("uri", "")
182182
for m in path_template._VARIABLE_RE.finditer(uri_template):
183-
name = m.group("name")
184-
if name:
185-
bound_fields.add(name.split(".")[0])
183+
bound_fields.add(m.group("name").split(".")[0])
186184
if body_param:
187185
bound_fields.add(body_param.split(".")[0])
188186

packages/google-api-core/tests/unit/test_rest_helpers.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,3 +324,38 @@ def test_transcode_with_required_fields_in_body_param():
324324
assert transcoded["uri"] == "/v1/test/my-name"
325325
assert "options" not in query_params
326326
assert query_params["filter"] == "default-filter"
327+
328+
329+
def test_transcode_required_fields_no_matching_option():
330+
http_options = [{"method": "get", "uri": "/v1/test"}]
331+
request = descriptor_pb2.FieldDescriptorProto()
332+
required_defaults = {"name": "default-name"}
333+
334+
with mock.patch(
335+
"google.api_core.path_template.transcode",
336+
return_value={"method": "delete", "uri": "/v1/test"},
337+
):
338+
_, _, query_params = transcode_request(
339+
http_options, request, required_fields_default_values=required_defaults
340+
)
341+
assert query_params["name"] == "default-name"
342+
343+
344+
def test_transcode_required_fields_uri_mismatch():
345+
http_options = [
346+
{"method": "get", "uri": "/v1/wrong_path/{name}"},
347+
{"method": "get", "uri": "/v1/test/{name}"},
348+
]
349+
request = descriptor_pb2.FieldDescriptorProto()
350+
request.name = "my-name"
351+
required_defaults = {"name": "default-name", "filter": "default-filter"}
352+
353+
with mock.patch(
354+
"google.api_core.path_template.transcode",
355+
return_value={"method": "get", "uri": "/v1/test/my-name"},
356+
):
357+
transcoded, _, query_params = transcode_request(
358+
http_options, request, required_fields_default_values=required_defaults
359+
)
360+
assert "name" not in query_params
361+
assert query_params["filter"] == "default-filter"

0 commit comments

Comments
 (0)