3535import com .google .testing .junit .testparameterinjector .TestParameterInjector ;
3636import com .google .testing .junit .testparameterinjector .TestParameters ;
3737import dev .cel .common .CelDescriptorUtil ;
38+ import dev .cel .common .CelOptions ;
3839import dev .cel .common .internal .CelDescriptorPool ;
3940import dev .cel .common .internal .DefaultDescriptorPool ;
4041import dev .cel .common .internal .DefaultMessageFactory ;
@@ -54,15 +55,18 @@ public final class ProtoMessageValueTest {
5455
5556 private static final ProtoCelValueConverter PROTO_CEL_VALUE_CONVERTER =
5657 ProtoCelValueConverter .newInstance (
57- DefaultDescriptorPool .INSTANCE , DynamicProto .create (DefaultMessageFactory .INSTANCE ));
58+ DefaultDescriptorPool .INSTANCE ,
59+ DynamicProto .create (DefaultMessageFactory .INSTANCE ),
60+ CelOptions .DEFAULT );
5861
5962 @ Test
6063 public void emptyProtoMessage () {
6164 ProtoMessageValue protoMessageValue =
6265 ProtoMessageValue .create (
6366 TestAllTypes .getDefaultInstance (),
6467 DefaultDescriptorPool .INSTANCE ,
65- PROTO_CEL_VALUE_CONVERTER );
68+ PROTO_CEL_VALUE_CONVERTER ,
69+ /* enableJsonFieldNames= */ false );
6670
6771 assertThat (protoMessageValue .value ()).isEqualTo (TestAllTypes .getDefaultInstance ());
6872 assertThat (protoMessageValue .isZeroValue ()).isTrue ();
@@ -74,7 +78,7 @@ public void constructProtoMessage() {
7478 TestAllTypes .newBuilder ().setSingleBool (true ).setSingleInt64 (5L ).build ();
7579 ProtoMessageValue protoMessageValue =
7680 ProtoMessageValue .create (
77- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
81+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
7882
7983 assertThat (protoMessageValue .value ()).isEqualTo (testAllTypes );
8084 assertThat (protoMessageValue .isZeroValue ()).isFalse ();
@@ -90,7 +94,7 @@ public void findField_fieldIsSet_fieldExists() {
9094 .build ();
9195 ProtoMessageValue protoMessageValue =
9296 ProtoMessageValue .create (
93- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
97+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
9498
9599 assertThat (protoMessageValue .find ("single_bool" )).isPresent ();
96100 assertThat (protoMessageValue .find ("single_int64" )).isPresent ();
@@ -103,7 +107,8 @@ public void findField_fieldIsUnset_fieldDoesNotExist() {
103107 ProtoMessageValue .create (
104108 TestAllTypes .getDefaultInstance (),
105109 DefaultDescriptorPool .INSTANCE ,
106- PROTO_CEL_VALUE_CONVERTER );
110+ PROTO_CEL_VALUE_CONVERTER ,
111+ /* enableJsonFieldNames= */ false );
107112
108113 assertThat (protoMessageValue .find ("single_int32" )).isEmpty ();
109114 assertThat (protoMessageValue .find ("single_uint64" )).isEmpty ();
@@ -116,7 +121,8 @@ public void findField_fieldIsUndeclared_throwsException() {
116121 ProtoMessageValue .create (
117122 TestAllTypes .getDefaultInstance (),
118123 DefaultDescriptorPool .INSTANCE ,
119- PROTO_CEL_VALUE_CONVERTER );
124+ PROTO_CEL_VALUE_CONVERTER ,
125+ /* enableJsonFieldNames= */ false );
120126
121127 IllegalArgumentException exception =
122128 assertThrows (IllegalArgumentException .class , () -> protoMessageValue .select ("bogus" ));
@@ -137,7 +143,7 @@ public void findField_extensionField_success() {
137143 TestAllTypes .newBuilder ().setExtension (TestAllTypesExtensions .int32Ext , 1 ).build ();
138144
139145 ProtoMessageValue protoMessageValue =
140- ProtoMessageValue .create (proto2Message , descriptorPool , PROTO_CEL_VALUE_CONVERTER );
146+ ProtoMessageValue .create (proto2Message , descriptorPool , PROTO_CEL_VALUE_CONVERTER , false );
141147
142148 assertThat (protoMessageValue .find ("cel.expr.conformance.proto2.int32_ext" )).isPresent ();
143149 }
@@ -149,7 +155,7 @@ public void findField_extensionField_throwsWhenDescriptorMissing() {
149155
150156 ProtoMessageValue protoMessageValue =
151157 ProtoMessageValue .create (
152- proto2Message , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
158+ proto2Message , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
153159
154160 IllegalArgumentException exception =
155161 assertThrows (
@@ -193,7 +199,8 @@ private enum SelectFieldTestCase {
193199 ProtoMessageValue .create (
194200 NestedMessage .getDefaultInstance (),
195201 DefaultDescriptorPool .INSTANCE ,
196- PROTO_CEL_VALUE_CONVERTER )),
202+ PROTO_CEL_VALUE_CONVERTER ,
203+ /* enableJsonFieldNames= */ false )),
197204 NESTED_ENUM ("standalone_enum" , 1L );
198205
199206 private final String fieldName ;
@@ -239,7 +246,7 @@ public void selectField_success(@TestParameter SelectFieldTestCase testCase) {
239246
240247 ProtoMessageValue protoMessageValue =
241248 ProtoMessageValue .create (
242- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
249+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
243250
244251 assertThat (protoMessageValue .select (testCase .fieldName )).isEqualTo (testCase .value );
245252 }
@@ -253,7 +260,8 @@ public void selectField_dynamicMessage_success() {
253260 ProtoMessageValue .create (
254261 DynamicMessage .newBuilder (testAllTypes ).build (),
255262 DefaultDescriptorPool .INSTANCE ,
256- PROTO_CEL_VALUE_CONVERTER );
263+ PROTO_CEL_VALUE_CONVERTER ,
264+ /* enableJsonFieldNames= */ false );
257265
258266 assertThat (protoMessageValue .select ("single_int32_wrapper" )).isEqualTo (5 );
259267 }
@@ -269,7 +277,7 @@ public void selectField_timestampNanosOutOfRange_success(int nanos) {
269277
270278 ProtoMessageValue protoMessageValue =
271279 ProtoMessageValue .create (
272- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
280+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
273281
274282 assertThat (protoMessageValue .select ("single_timestamp" ))
275283 .isEqualTo (Instant .ofEpochSecond (0 , nanos ));
@@ -289,7 +297,7 @@ public void selectField_durationOutOfRange_success(int seconds, int nanos) {
289297
290298 ProtoMessageValue protoMessageValue =
291299 ProtoMessageValue .create (
292- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
300+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
293301
294302 assertThat (protoMessageValue .select ("single_duration" ))
295303 .isEqualTo (Duration .ofSeconds (seconds , nanos ));
@@ -334,7 +342,7 @@ public void selectField_jsonValue(@TestParameter SelectFieldJsonValueTestCase te
334342
335343 ProtoMessageValue protoMessageValue =
336344 ProtoMessageValue .create (
337- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
345+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
338346
339347 assertThat (protoMessageValue .select ("single_value" )).isEqualTo (testCase .value );
340348 }
@@ -351,7 +359,7 @@ public void selectField_jsonStruct() {
351359
352360 ProtoMessageValue protoMessageValue =
353361 ProtoMessageValue .create (
354- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
362+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
355363
356364 assertThat (protoMessageValue .select ("single_struct" )).isEqualTo (ImmutableMap .of ("a" , false ));
357365 }
@@ -368,7 +376,7 @@ public void selectField_jsonList() {
368376
369377 ProtoMessageValue protoMessageValue =
370378 ProtoMessageValue .create (
371- testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER );
379+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , false );
372380
373381 assertThat (protoMessageValue .select ("list_value" )).isEqualTo (ImmutableList .of (false ));
374382 }
@@ -379,7 +387,8 @@ public void selectField_wrapperFieldUnset_returnsNull() {
379387 ProtoMessageValue .create (
380388 TestAllTypes .getDefaultInstance (),
381389 DefaultDescriptorPool .INSTANCE ,
382- PROTO_CEL_VALUE_CONVERTER );
390+ PROTO_CEL_VALUE_CONVERTER ,
391+ /* enableJsonFieldNames= */ false );
383392
384393 assertThat (protoMessageValue .select ("single_int64_wrapper" )).isEqualTo (NullValue .NULL_VALUE );
385394 }
@@ -390,9 +399,21 @@ public void celTypeTest() {
390399 ProtoMessageValue .create (
391400 TestAllTypes .getDefaultInstance (),
392401 DefaultDescriptorPool .INSTANCE ,
393- PROTO_CEL_VALUE_CONVERTER );
402+ PROTO_CEL_VALUE_CONVERTER ,
403+ /* enableJsonFieldNames= */ false );
394404
395405 assertThat (protoMessageValue .celType ())
396406 .isEqualTo (StructTypeReference .create (TestAllTypes .getDescriptor ().getFullName ()));
397407 }
408+
409+ @ Test
410+ public void findField_jsonName_success () {
411+ TestAllTypes testAllTypes = TestAllTypes .newBuilder ().setSingleInt32 (42 ).build ();
412+
413+ ProtoMessageValue protoMessageValue =
414+ ProtoMessageValue .create (
415+ testAllTypes , DefaultDescriptorPool .INSTANCE , PROTO_CEL_VALUE_CONVERTER , true );
416+
417+ assertThat (protoMessageValue .find ("singleInt32" )).isPresent ();
418+ }
398419}
0 commit comments