diff --git a/common/values/parsed_map_field_value.cc b/common/values/parsed_map_field_value.cc index 0b2b49a8d..8dd7c3d02 100644 --- a/common/values/parsed_map_field_value.cc +++ b/common/values/parsed_map_field_value.cc @@ -69,7 +69,7 @@ absl::Status ParsedMapFieldValue::SerializeTo( google::protobuf::Value message; CEL_RETURN_IF_ERROR(internal::MessageFieldToJson( *message_, field_, descriptor_pool, message_factory, &message)); - if (!message.list_value().SerializePartialToZeroCopyStream(output)) { + if (!message.struct_value().SerializePartialToZeroCopyStream(output)) { return absl::UnknownError("failed to serialize google.protobuf.Struct"); } return absl::OkStatus(); diff --git a/common/values/parsed_map_field_value_test.cc b/common/values/parsed_map_field_value_test.cc index e5f79dc39..c1a968646 100644 --- a/common/values/parsed_map_field_value_test.cc +++ b/common/values/parsed_map_field_value_test.cc @@ -102,7 +102,7 @@ TEST_F(ParsedMapFieldValueTest, IsZeroValue) { EXPECT_TRUE(value.IsZeroValue()); } -TEST_F(ParsedMapFieldValueTest, SerializeTo) { +TEST_F(ParsedMapFieldValueTest, SerializeToEmpty) { ParsedMapFieldValue value( DynamicParseTextProto(R"pb()pb"), DynamicGetField("map_int64_int64"), arena()); @@ -112,6 +112,23 @@ TEST_F(ParsedMapFieldValueTest, SerializeTo) { EXPECT_THAT(std::move(output).Consume(), IsEmpty()); } +TEST_F(ParsedMapFieldValueTest, SerializeTo) { + ParsedMapFieldValue value( + DynamicParseTextProto( + R"pb(map_string_string { key: "foo" value: "bar" })pb"), + DynamicGetField("map_string_string"), arena()); + google::protobuf::io::CordOutputStream output; + EXPECT_THAT(value.SerializeTo(descriptor_pool(), message_factory(), &output), + IsOk()); + google::protobuf::Struct actual; + EXPECT_TRUE(actual.ParsePartialFromCord(std::move(output).Consume())); + EXPECT_THAT(actual, EqualsTextProto( + R"pb(fields { + key: "foo" + value { string_value: "bar" } + })pb")); +} + TEST_F(ParsedMapFieldValueTest, ConvertToJson) { auto json = DynamicParseTextProto(R"pb()pb"); ParsedMapFieldValue value(