Skip to content

Commit 71810fd

Browse files
committed
add test
1 parent 3ba7c34 commit 71810fd

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

google/api_core/path_template.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ def transcode(http_options, message=None, **request_kwargs):
310310
if message:
311311
try:
312312
request["body"] = getattr(leftovers, body)
313+
delete_field(leftovers, body)
313314
except AttributeError as e:
314315
# gapic-generator-python appends underscores to field names
315316
# that collide with python keywords.
@@ -319,9 +320,9 @@ def transcode(http_options, message=None, **request_kwargs):
319320
# https://github.com/googleapis/python-api-core/issues/227
320321
if hasattr(leftovers, body + "_"):
321322
request["body"] = getattr(leftovers, body + "_")
323+
delete_field(leftovers, body + "_")
322324
else:
323325
raise e
324-
delete_field(leftovers, body)
325326
else:
326327
# gapic-generator-python appends underscores to field names
327328
# that collide with python keywords.

tests/unit/test_path_template.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,20 @@
1717
import mock
1818
import pytest
1919

20+
import proto
21+
2022
from google.api import auth_pb2
2123
from google.api_core import path_template
2224

2325

26+
class Breakpoint(proto.Message):
27+
name = proto.Field(proto.STRING, number=1)
28+
29+
class SomeMessage(proto.Message):
30+
breakpoint_ = proto.Field(Breakpoint, number=1)
31+
debuggee_id = proto.Field(proto.STRING, number=2)
32+
33+
2434
@pytest.mark.parametrize(
2535
"tmpl, args, kwargs, expected_result",
2636
[
@@ -420,6 +430,13 @@ def test_transcode_with_wildcard(
420430
{"data": {"id": 1, "info": "some info"}, "foo_": "bar"},
421431
["post", "/v1/no/template", {"id": 1, "info": "some info"}, {"foo": "bar"}],
422432
],
433+
# Single field body with reserved keyword, using message where field name has trailing underscore
434+
[
435+
[["post", "/v1/no/template", "breakpoint"]],
436+
SomeMessage(breakpoint_=Breakpoint(name="test"),debuggee_id="test")._pb,
437+
{},
438+
["post", "/v1/no/template", Breakpoint(name="test")._pb, SomeMessage(debuggee_id="test")._pb],
439+
],
423440
[
424441
[["post", "/v1/no/template", "oauth"]],
425442
auth_pb2.AuthenticationRule(

0 commit comments

Comments
 (0)