From b62e12151d06e093eede1c13962ea6670331f9fa Mon Sep 17 00:00:00 2001 From: Heba Alazzeh Date: Mon, 20 Jul 2026 22:59:57 +0000 Subject: [PATCH 1/2] test(api-core): use re.fullmatch for strict UUID validation --- packages/google-api-core/tests/unit/gapic/test_requests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google-api-core/tests/unit/gapic/test_requests.py b/packages/google-api-core/tests/unit/gapic/test_requests.py index e046f31b828b..fcbd5d2201b4 100644 --- a/packages/google-api-core/tests/unit/gapic/test_requests.py +++ b/packages/google-api-core/tests/unit/gapic/test_requests.py @@ -110,6 +110,6 @@ def test_setup_request_id(request_obj, is_proto3_optional, expected): ) if expected == "uuid": - assert re.match(UUID_REGEX, value) + assert re.fullmatch(UUID_REGEX, value) else: assert value == expected From 1e7d8d419272a39d8d02b5b15d65c0b6c562fffa Mon Sep 17 00:00:00 2001 From: Heba Alazzeh Date: Mon, 20 Jul 2026 23:13:33 +0000 Subject: [PATCH 2/2] test(api-core): add test case verifying UUID_REGEX strictness --- .../tests/unit/gapic/test_requests.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/google-api-core/tests/unit/gapic/test_requests.py b/packages/google-api-core/tests/unit/gapic/test_requests.py index fcbd5d2201b4..3be20763011d 100644 --- a/packages/google-api-core/tests/unit/gapic/test_requests.py +++ b/packages/google-api-core/tests/unit/gapic/test_requests.py @@ -113,3 +113,17 @@ def test_setup_request_id(request_obj, is_proto3_optional, expected): assert re.fullmatch(UUID_REGEX, value) else: assert value == expected + + +def test_setup_request_id_assertion_strictness(mocker): + # Mock uuid.uuid4 to return a UUID with trailing characters + mock_uuid = mocker.patch("uuid.uuid4") + mock_uuid.return_value.__str__.return_value = ( + "12345678-1234-4123-8123-123456789012-extra" + ) + + # We expect test_setup_request_id to fail (raise AssertionError) because the UUID is invalid. + # If test_setup_request_id uses re.fullmatch, it will fail (raise AssertionError), so pytest.raises passes. + # If test_setup_request_id uses re.match, it will NOT fail, so pytest.raises fails! + with pytest.raises(AssertionError): + test_setup_request_id(MockRequest(), is_proto3_optional=True, expected="uuid")