11package io .odpf .depot .message .proto ;
22
33import com .google .api .client .util .DateTime ;
4- import com .google .protobuf .Descriptors ;
5- import com .google .protobuf .Duration ;
6- import com .google .protobuf .DynamicMessage ;
7- import com .google .protobuf .ListValue ;
8- import com .google .protobuf .Message ;
9- import com .google .protobuf .Struct ;
10- import com .google .protobuf .Timestamp ;
11- import com .google .protobuf .Value ;
4+ import com .google .protobuf .*;
125import com .google .protobuf .util .JsonFormat ;
13- import io .odpf .depot .StatusBQ ;
14- import io .odpf .depot .TestBookingLogMessage ;
15- import io .odpf .depot .TestKeyBQ ;
16- import io .odpf .depot .TestLocation ;
17- import io .odpf .depot .TestMessage ;
18- import io .odpf .depot .TestMessageBQ ;
19- import io .odpf .depot .TestNestedMessageBQ ;
20- import io .odpf .depot .TestNestedRepeatedMessageBQ ;
21- import io .odpf .depot .TestTypesMessage ;
6+ import io .odpf .depot .*;
227import io .odpf .depot .message .OdpfMessageSchema ;
238import io .odpf .depot .message .ParsedOdpfMessage ;
249import io .odpf .depot .message .proto .converter .fields .MessageProtoField ;
2510import io .odpf .depot .message .proto .converter .fields .ProtoField ;
2611import io .odpf .stencil .Parser ;
2712import io .odpf .stencil .StencilClientFactory ;
2813import io .odpf .stencil .client .StencilClient ;
14+ import org .apache .xerces .impl .dv .util .Base64 ;
2915import org .json .JSONArray ;
3016import org .junit .Assert ;
3117import org .junit .Before ;
3218import org .junit .Test ;
19+ import org .junit .jupiter .api .Assertions ;
3320import org .mockito .Mock ;
3421import org .mockito .Mockito ;
3522
4532
4633public class ProtoOdpfParsedMessageTest {
4734
48- private static JsonFormat .Printer printer = JsonFormat .printer ()
35+ private static final JsonFormat .Printer PRINTER = JsonFormat .printer ()
4936 .preservingProtoFieldNames ()
5037 .omittingInsignificantWhitespace ();
5138 private Timestamp createdAt ;
@@ -85,6 +72,8 @@ public void setUp() throws IOException, Descriptors.DescriptorValidationExceptio
8572 put (String .format ("%s" , TestBookingLogMessage .TopicMetadata .class .getName ()), TestBookingLogMessage .TopicMetadata .getDescriptor ());
8673 put (String .format ("%s" , TestTypesMessage .class .getName ()), TestTypesMessage .getDescriptor ());
8774 put (String .format ("%s" , TestMessage .class .getName ()), TestMessage .getDescriptor ());
75+ put (String .format ("%s" , FloatTest .class .getName ()), FloatTest .getDescriptor ());
76+ put (String .format ("%s" , FloatTestContainer .class .getName ()), FloatTestContainer .getDescriptor ());
8877 put ("io.odpf.depot.TestMessageBQ.CurrentStateEntry" , TestMessageBQ .getDescriptor ().getNestedTypes ().get (0 ));
8978 put ("com.google.protobuf.Struct.FieldsEntry" , Struct .getDescriptor ().getNestedTypes ().get (0 ));
9079 put ("com.google.protobuf.Duration" , com .google .protobuf .Duration .getDescriptor ());
@@ -109,6 +98,15 @@ public void shouldReturnFieldsInProperties() throws IOException {
10998 assertEquals (21 , dateFields .get ("day" ));
11099 }
111100
101+ @ Test
102+ public void shouldThrowExceptionWhenFloatingPointIsNaN () throws IOException {
103+ String data = "ogQFJQAAwH8=" ;
104+ byte [] decode = Base64 .decode (data );
105+ DynamicMessage message = DynamicMessage .parseFrom (FloatTest .getDescriptor (), decode );
106+ OdpfMessageSchema odpfMessageSchema = odpfMessageParser .getSchema ("io.odpf.depot.FloatTest" , descriptorsMap );
107+ Assertions .assertThrows (IllegalArgumentException .class , () -> new ProtoOdpfParsedMessage (message ).getMapping (odpfMessageSchema ));
108+ }
109+
112110 @ Test
113111 public void shouldParseDurationMessageSuccessfully () throws IOException {
114112 TestMessageBQ message = TestProtoUtil .generateTestMessage (now );
@@ -425,7 +423,7 @@ public void shouldGetRepeatableStructField() throws IOException {
425423 JSONArray expectedArray = new JSONArray ();
426424 JSONArray actualArray = new JSONArray ();
427425 for (int ii = 0 ; ii < message .getAttributesCount (); ii ++) {
428- expectedArray .put (printer .print (message .getAttributes (ii )));
426+ expectedArray .put (PRINTER .print (message .getAttributes (ii )));
429427 actualArray .put (attributes .get (ii ));
430428 }
431429 Assert .assertEquals (expectedArray .toString (), actualArray .toString ());
0 commit comments