Skip to content

Commit d1c4c8e

Browse files
vam-googleparthea
andauthored
fix: Fix required fields test for REST transport (#1389)
* fix: Fix required fields test for REST transport This fixes the assumption that query param fields can be only primitives. They also can be enums and special proto objects which serialize to string in json mapping: FieldMask, Timestam, Duration. The tests will follow in a form of integration tests once grpc+rest transport is enabled in googleapis * update python version in noxfile template to match CI * regenerate goldens * remove assumption that query param fields can be only primitives * update black version in templated noxfile to fix CI Co-authored-by: Anthonios Partheniou <partheniou@google.com>
1 parent 55f552b commit d1c4c8e

10 files changed

Lines changed: 24 additions & 24 deletions

File tree

packages/gapic-generator/gapic/ads-templates/%namespace/%name/%version/%sub/services/%service/transports/rest.py.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ class {{service.name}}RestTransport({{service.name}}Transport):
256256
{% if not method.client_streaming %}
257257
{% if method.input.required_fields %}
258258
__REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, str] = {
259-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
260-
"{{ req_field.name | camel_case }}" : {% if req_field.field_pb.type == 9 %}"{{req_field.field_pb.default_value }}"{% else %}{{ req_field.type.python_type(req_field.field_pb.default_value or 0) }}{% endif %},{# default is str #}
259+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
260+
"{{ req_field.name | camel_case }}" : {% if req_field.field_pb.type == 9 %}"{{req_field.field_pb.default_value }}"{% elif req_field.field_pb.type in [11, 14] %}{}{% else %}{{ req_field.type.python_type(req_field.field_pb.default_value or 0) }}{% endif %},{# default is str #}
261261
{% endfor %}
262262
}
263263

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,7 +1109,7 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
11091109
))
11101110

11111111
# verify fields with default values are dropped
1112-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
1112+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
11131113
{% set field_name = req_field.name | camel_case %}
11141114
assert "{{ field_name }}" not in jsonified_request
11151115
{% endfor %}
@@ -1118,13 +1118,13 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
11181118
jsonified_request.update(unset_fields)
11191119

11201120
# verify required fields with default values are now present
1121-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
1121+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
11221122
{% set field_name = req_field.name | camel_case %}
11231123
assert "{{ field_name }}" in jsonified_request
11241124
assert jsonified_request["{{ field_name }}"] == request_init["{{ req_field.name }}"]
11251125
{% endfor %}
11261126

1127-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
1127+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
11281128
{% set field_name = req_field.name | camel_case %}
11291129
{% set mock_value = req_field.primitive_mock_as_str() %}
11301130
{% if method.query_params %}
@@ -1143,7 +1143,7 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
11431143
jsonified_request.update(unset_fields)
11441144

11451145
# verify required fields with non-default values are left alone
1146-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
1146+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
11471147
{% set field_name = req_field.name | camel_case %}
11481148
{% set mock_value = req_field.primitive_mock_as_str() %}
11491149
assert "{{ field_name }}" in jsonified_request
@@ -1208,7 +1208,7 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
12081208
{% endif %}
12091209

12101210
expected_params = [
1211-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
1211+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
12121212
(
12131213
"{{ req_field.name | camel_case }}",
12141214
{% if req_field.field_pb.type == 9 %}

packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/rest.py.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,8 @@ class {{service.name}}RestTransport({{service.name}}Transport):
264264
{% if not method.client_streaming %}
265265
{% if method.input.required_fields %}
266266
__REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, str] = {
267-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
268-
"{{ req_field.name | camel_case }}" : {% if req_field.field_pb.type == 9 %}"{{req_field.field_pb.default_value }}"{% else %}{{ req_field.type.python_type(req_field.field_pb.default_value or 0) }}{% endif %},{# default is str #}
267+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
268+
"{{ req_field.name | camel_case }}" : {% if req_field.field_pb.type == 9 %}"{{req_field.field_pb.default_value }}"{% elif req_field.field_pb.type in [11, 14] %}{}{% else %}{{ req_field.type.python_type(req_field.field_pb.default_value or 0) }}{% endif %},{# default is str #}
269269
{% endfor %}
270270
}
271271

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
2424
LOWER_BOUND_CONSTRAINTS_FILE = CURRENT_DIRECTORY / "constraints.txt"
2525
PACKAGE_NAME = subprocess.check_output([sys.executable, "setup.py", "--name"], encoding="utf-8")
2626

27-
BLACK_VERSION = "black==19.10b0"
27+
BLACK_VERSION = "black==22.3.0"
2828
BLACK_PATHS = ["docs", "google", "tests", "samples", "noxfile.py", "setup.py"]
29-
DEFAULT_PYTHON_VERSION = "3.9"
29+
DEFAULT_PYTHON_VERSION = "3.10"
3030

3131
nox.sessions = [
3232
"unit",

packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_macros.j2

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -973,7 +973,7 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
973973
))
974974

975975
# verify fields with default values are dropped
976-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
976+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
977977
{% set field_name = req_field.name | camel_case %}
978978
assert "{{ field_name }}" not in jsonified_request
979979
{% endfor %}
@@ -982,7 +982,7 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
982982
jsonified_request.update(unset_fields)
983983

984984
# verify required fields with default values are now present
985-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
985+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
986986
{% set field_name = req_field.name | camel_case %}
987987
assert "{{ field_name }}" in jsonified_request
988988
assert jsonified_request["{{ field_name }}"] == request_init["{{ req_field.name }}"]
@@ -1067,7 +1067,7 @@ def test_{{ method_name }}_rest_required_fields(request_type={{ method.input.ide
10671067
{% endif %}
10681068

10691069
expected_params = [
1070-
{% for req_field in method.input.required_fields if req_field.is_primitive and req_field.name in method.query_params %}
1070+
{% for req_field in method.input.required_fields if req_field.name in method.query_params %}
10711071
(
10721072
"{{ req_field.name | camel_case }}",
10731073
{% if req_field.field_pb.type == 9 %}

packages/gapic-generator/tests/integration/goldens/asset/noxfile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
LOWER_BOUND_CONSTRAINTS_FILE = CURRENT_DIRECTORY / "constraints.txt"
3636
PACKAGE_NAME = subprocess.check_output([sys.executable, "setup.py", "--name"], encoding="utf-8")
3737

38-
BLACK_VERSION = "black==19.10b0"
38+
BLACK_VERSION = "black==22.3.0"
3939
BLACK_PATHS = ["docs", "google", "tests", "samples", "noxfile.py", "setup.py"]
40-
DEFAULT_PYTHON_VERSION = "3.9"
40+
DEFAULT_PYTHON_VERSION = "3.10"
4141

4242
nox.sessions = [
4343
"unit",

packages/gapic-generator/tests/integration/goldens/credentials/noxfile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
LOWER_BOUND_CONSTRAINTS_FILE = CURRENT_DIRECTORY / "constraints.txt"
3636
PACKAGE_NAME = subprocess.check_output([sys.executable, "setup.py", "--name"], encoding="utf-8")
3737

38-
BLACK_VERSION = "black==19.10b0"
38+
BLACK_VERSION = "black==22.3.0"
3939
BLACK_PATHS = ["docs", "google", "tests", "samples", "noxfile.py", "setup.py"]
40-
DEFAULT_PYTHON_VERSION = "3.9"
40+
DEFAULT_PYTHON_VERSION = "3.10"
4141

4242
nox.sessions = [
4343
"unit",

packages/gapic-generator/tests/integration/goldens/eventarc/noxfile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
LOWER_BOUND_CONSTRAINTS_FILE = CURRENT_DIRECTORY / "constraints.txt"
3636
PACKAGE_NAME = subprocess.check_output([sys.executable, "setup.py", "--name"], encoding="utf-8")
3737

38-
BLACK_VERSION = "black==19.10b0"
38+
BLACK_VERSION = "black==22.3.0"
3939
BLACK_PATHS = ["docs", "google", "tests", "samples", "noxfile.py", "setup.py"]
40-
DEFAULT_PYTHON_VERSION = "3.9"
40+
DEFAULT_PYTHON_VERSION = "3.10"
4141

4242
nox.sessions = [
4343
"unit",

packages/gapic-generator/tests/integration/goldens/logging/noxfile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
LOWER_BOUND_CONSTRAINTS_FILE = CURRENT_DIRECTORY / "constraints.txt"
3636
PACKAGE_NAME = subprocess.check_output([sys.executable, "setup.py", "--name"], encoding="utf-8")
3737

38-
BLACK_VERSION = "black==19.10b0"
38+
BLACK_VERSION = "black==22.3.0"
3939
BLACK_PATHS = ["docs", "google", "tests", "samples", "noxfile.py", "setup.py"]
40-
DEFAULT_PYTHON_VERSION = "3.9"
40+
DEFAULT_PYTHON_VERSION = "3.10"
4141

4242
nox.sessions = [
4343
"unit",

packages/gapic-generator/tests/integration/goldens/redis/noxfile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
LOWER_BOUND_CONSTRAINTS_FILE = CURRENT_DIRECTORY / "constraints.txt"
3636
PACKAGE_NAME = subprocess.check_output([sys.executable, "setup.py", "--name"], encoding="utf-8")
3737

38-
BLACK_VERSION = "black==19.10b0"
38+
BLACK_VERSION = "black==22.3.0"
3939
BLACK_PATHS = ["docs", "google", "tests", "samples", "noxfile.py", "setup.py"]
40-
DEFAULT_PYTHON_VERSION = "3.9"
40+
DEFAULT_PYTHON_VERSION = "3.10"
4141

4242
nox.sessions = [
4343
"unit",

0 commit comments

Comments
 (0)