@@ -170,6 +170,39 @@ INSTANTIATE_TEST_SUITE_P(
170170 }
171171 })" ,
172172 AnyMessageData{ValueMessageData{std::map<std::string, std::string>{{" aaa" , " hello" }, {" bbb" , " world" }}}}
173+ },
174+ // nonportable_raw_any: parse Any from {"type_url": "...", "value": "<base64>"} without descriptor lookup
175+ AnyFromJsonSuccessTestParam{
176+ R"( {"field1":{"type_url":"type.googleapis.com/proto_json.messages.Int32Message","value":"CAoQFBge"}})" ,
177+ AnyMessageData{
178+ RawAnyData{" type.googleapis.com/proto_json.messages.Int32Message" , " \x08\x0a\x10\x14\x18\x1e " }
179+ },
180+ {.nonportable_raw_any = true },
181+ // Native implementation does not support nonportable_raw_any option.
182+ true
183+ },
184+ AnyFromJsonSuccessTestParam{
185+ R"( {"field1":{"typeUrl":"type.googleapis.com/proto_json.messages.Int32Message","value":"CAoQFBge"}})" ,
186+ AnyMessageData{
187+ RawAnyData{" type.googleapis.com/proto_json.messages.Int32Message" , " \x08\x0a\x10\x14\x18\x1e " }
188+ },
189+ {.nonportable_raw_any = true },
190+ // Native implementation does not support nonportable_raw_any option.
191+ true
192+ },
193+ AnyFromJsonSuccessTestParam{
194+ R"( {"field1":{"type_url":"type.googleapis.com/proto_json.messages.NonExistent","value":"CAE="}})" ,
195+ AnyMessageData{RawAnyData{" type.googleapis.com/proto_json.messages.NonExistent" , " \x08\x01 " }},
196+ {.nonportable_raw_any = true },
197+ // Native implementation does not support nonportable_raw_any option.
198+ true
199+ },
200+ AnyFromJsonSuccessTestParam{
201+ R"( {"field1":{"type_url":"","value":""}})" ,
202+ AnyMessageData{RawAnyData{" " , " " }},
203+ {.nonportable_raw_any = true },
204+ // Native implementation does not support nonportable_raw_any option.
205+ true
173206 }
174207 )
175208);
@@ -249,6 +282,27 @@ INSTANTIATE_TEST_SUITE_P(
249282 ParseErrorCode::kUnknownField ,
250283 " field1.unknown_field" ,
251284 {.ignore_unknown_fields = false }
285+ },
286+ // nonportable_raw_any: missing 'value' field
287+ AnyFromJsonFailureTestParam{
288+ R"( {"field1":{"type_url":"type.googleapis.com/some.Type"}})" ,
289+ ParseErrorCode::kInvalidValue ,
290+ " field1" ,
291+ {.nonportable_raw_any = true }
292+ },
293+ // nonportable_raw_any: missing 'type_url' field
294+ AnyFromJsonFailureTestParam{
295+ R"( {"field1":{"value":""}})" ,
296+ ParseErrorCode::kInvalidValue ,
297+ " field1" ,
298+ {.nonportable_raw_any = true }
299+ },
300+ // nonportable_raw_any: non-string 'type_url'
301+ AnyFromJsonFailureTestParam{
302+ R"( {"field1":{"type_url":123,"value":""}})" ,
303+ ParseErrorCode::kInvalidValue ,
304+ " field1" ,
305+ {.nonportable_raw_any = true }
252306 }
253307 )
254308);
0 commit comments