Skip to content

Commit 38eb7a3

Browse files
committed
fix(api-core): prevent overwriting explicit empty strings for optional request_id
1 parent 14447fb commit 38eb7a3

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

packages/google-api-core/google/api_core/gapic_v1/requests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def setup_request_id(
6565
setattr(request, field_name, str(uuid.uuid4()))
6666
except (AttributeError, ValueError):
6767
# Proto-plus messages or other objects
68-
if not getattr(request, field_name, None):
68+
if getattr(request, field_name, None) is None:
6969
setattr(request, field_name, str(uuid.uuid4()))
7070
else:
7171
if not getattr(request, field_name, None):

packages/google-api-core/tests/unit/gapic/test_requests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def __contains__(self, key):
5959
# MockRequest cases
6060
(MockRequest(), True, "uuid"),
6161
(MockRequest(request_id="already_set"), True, "already_set"),
62+
(MockRequest(request_id=""), True, ""),
6263
(MockRequest(request_id=""), False, "uuid"),
6364
(MockRequest(request_id="already_set"), False, "already_set"),
6465
# MockProtoRequest cases
@@ -70,6 +71,7 @@ def __contains__(self, key):
7071
({}, True, "uuid"),
7172
({"request_id": None}, True, "uuid"),
7273
({"request_id": "already_set"}, True, "already_set"),
74+
({"request_id": ""}, True, ""),
7375
({"request_id": ""}, False, "uuid"),
7476
({"request_id": None}, False, "uuid"),
7577
({"request_id": "already_set"}, False, "already_set"),
@@ -79,6 +81,7 @@ def __contains__(self, key):
7981
ids=[
8082
"proto3_optional_not_in_request",
8183
"proto3_optional_already_in_request",
84+
"proto3_optional_explicit_empty",
8285
"non_proto3_optional_empty",
8386
"non_proto3_optional_already_set",
8487
"proto3_optional_not_in_request_proto",
@@ -87,6 +90,7 @@ def __contains__(self, key):
8790
"dict_proto3_optional_not_in_request",
8891
"dict_proto3_optional_value_none",
8992
"dict_proto3_optional_already_in_request",
93+
"dict_proto3_optional_explicit_empty",
9094
"dict_non_proto3_optional_empty",
9195
"dict_non_proto3_optional_value_none",
9296
"dict_non_proto3_optional_already_set",

0 commit comments

Comments
 (0)