11package com .google .api .logging ;
22
33import static org .mockito .ArgumentMatchers .any ;
4+ import static org .mockito .ArgumentMatchers .anyString ;
45import static org .mockito .Mockito .mock ;
6+ import static org .mockito .Mockito .never ;
7+ import static org .mockito .Mockito .times ;
58import static org .mockito .Mockito .verify ;
9+ import static org .mockito .Mockito .verifyNoInteractions ;
610import static org .mockito .Mockito .when ;
711
812import ch .qos .logback .classic .spi .ILoggingEvent ;
1115import java .io .IOException ;
1216import java .util .HashMap ;
1317import java .util .Map ;
18+ import org .junit .jupiter .api .BeforeEach ;
1419import org .junit .jupiter .api .Test ;
1520
1621public class SDKLoggingMdcJsonProviderTest {
1722
23+ private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider ();
24+ private JsonGenerator generator = mock (JsonGenerator .class );
25+ private ILoggingEvent event = mock (ILoggingEvent .class );
26+ private Map <String , String > mdc ;
27+
28+ @ BeforeEach
29+ void init () {
30+ mdc = new HashMap <>();
31+ when (event .getMDCPropertyMap ()).thenReturn (mdc );
32+ }
33+
1834 @ Test
19- void testWriteJsonFormat () throws IOException {
20- SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider ();
21- JsonGenerator generator = mock (JsonGenerator .class );
22- ILoggingEvent event = mock (ILoggingEvent .class );
23- Map <String , String > mdc = new HashMap <>();
35+ void testWriteJsonStringToJsonTree () throws IOException {
2436 mdc .put (
2537 "json1" ,
2638 "{\n "
@@ -31,10 +43,29 @@ void testWriteJsonFormat() throws IOException {
3143 + " \" state\" : \" ACTIVE\" \n "
3244 + " }\n "
3345 + "}" );
34- when (event .getMDCPropertyMap ()).thenReturn (mdc );
3546
3647 provider .writeTo (generator , event );
3748 verify (generator ).writeFieldName ("json1" );
3849 verify (generator ).writeTree (any (JsonNode .class ));
3950 }
51+
52+ @ Test
53+ void testWriteIllegalJsonFormatToString () throws IOException {
54+ mdc .put (
55+ "json1" ,
56+ "{\n "
57+ + " \" @version\" : \" 1\" ,\n "
58+ + " \" textPayload\" : \" Received response\" ,\n "
59+ + " \" response.payload\" : {\n "
60+ + " \" name\" : \" example\" ,\n "
61+ + " \" state\" : \" ACTIVE\" ,\n " // the last semicolon is redundant.
62+ + " }\n "
63+ + "}" );
64+
65+
66+ provider .writeTo (generator , event );
67+ verify (generator ).writeFieldName ("json1" );
68+ verify (generator , never ()).writeTree (any (JsonNode .class ));
69+ verify (generator ).writeObject (anyString ());
70+ }
4071}
0 commit comments