Skip to content

Commit fd48be0

Browse files
authored
fix: more fixes for rest transport (#1042)
* fix: more fixes for rest transport This includes: 1) Implicit template support for grpc transcodding (accept `/v1/{project}/stuff` whichis equivalent to `/v1/{project=*}/stuff`) 2) Proper request message construction for paginated methods test 3) Depend on `google-api-core 2.2.0` for rest to accommodate the `int64` support fixes * fix a typo in test method name
1 parent 3e75854 commit fd48be0

File tree

5 files changed

+22
-3
lines changed

5 files changed

+22
-3
lines changed

packages/gapic-generator/gapic/templates/setup.py.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ setuptools.setup(
2929
install_requires=(
3030
{# TODO(dovs): remove when 1.x deprecation is complete #}
3131
{% if 'rest' in opts.transport %}
32-
'google-api-core[grpc] >= 2.1.0, < 3.0.0dev',
32+
'google-api-core[grpc] >= 2.2.0, < 3.0.0dev',
3333
{% else %}
3434
'google-api-core[grpc] >= 1.28.0, < 3.0.0dev',
3535
{% endif %}

packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,6 +1337,13 @@ def test_{{ method.name|snake_case }}_rest_pager():
13371337
req.side_effect = return_values
13381338

13391339
sample_request = {{ method.http_options[0].sample_request }}
1340+
{% for field in method.body_fields.values() %}
1341+
{% if not field.oneof or field.proto3_optional %}
1342+
{# ignore oneof fields that might conflict with sample_request #}
1343+
sample_request["{{ field.name }}"] = {{ field.mock_value }}
1344+
{% endif %}
1345+
{% endfor %}
1346+
13401347
pager = client.{{ method.name|snake_case }}(request=sample_request)
13411348

13421349
{% if method.paged_result_field.map %}

packages/gapic-generator/gapic/utils/uri_sample.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ def sample_from_path_fields(paths: List[Tuple[str, str]]) -> Dict[Any, Any]:
7171

7272
for path, template in paths:
7373
sample_value = re.sub(
74-
r"(\*\*|\*)", lambda n: next(sample_names), template)
74+
r"(\*\*|\*)",
75+
lambda n: next(sample_names), template if template else '*'
76+
)
7577
add_field(request, path, sample_value)
7678
return request

packages/gapic-generator/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
include_package_data=True,
4545
install_requires=(
4646
"click >= 6.7",
47-
"google-api-core >= 2.1.0",
47+
"google-api-core >= 2.2.0",
4848
"googleapis-common-protos >= 1.53.0",
4949
"grpcio >= 1.24.3",
5050
"jinja2 >= 2.10",

packages/gapic-generator/tests/unit/schema/wrappers/test_method.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,16 @@ def test_method_http_options_generate_sample():
475475
'id': 'projects/sample1/regions/sample2/id/sample3'}}
476476

477477

478+
def test_method_http_options_generate_sample_implicit_template():
479+
http_rule = http_pb2.HttpRule(
480+
get='/v1/{resource.id}/stuff',
481+
)
482+
method = make_method('DoSomething', http_rule=http_rule)
483+
sample = method.http_options[0].sample_request
484+
assert json.loads(sample) == {'resource': {
485+
'id': 'sample1'}}
486+
487+
478488
def test_method_query_params():
479489
# tests only the basic case of grpc transcoding
480490
http_rule = http_pb2.HttpRule(

0 commit comments

Comments
 (0)