2323import com .github .skjolber .jsonfilter .path .properties .JsonFilterProperties ;
2424import com .github .skjolber .jsonfilter .path .properties .JsonFilterReplacementsProperties ;
2525import com .github .skjolber .jsonfilter .path .properties .JsonFiltersProperties ;
26+ import com .github .skjolber .jsonfilter .path .properties .ProcessingProperties ;
2627import com .github .skjolber .jsonfilter .path .properties .WhitespaceStrategy ;
2728
2829public class RequestResponseJsonFilterFactoryTest {
@@ -33,6 +34,9 @@ public class RequestResponseJsonFilterFactoryTest {
3334 @ Test
3435 public void testDefaulConfiguration () {
3536 JsonFiltersProperties properties = new JsonFiltersProperties ();
37+ properties .setRequests (new ProcessingProperties (true , WhitespaceStrategy .ON_DEMAND ));
38+ properties .setResponses (new ProcessingProperties (false , WhitespaceStrategy .NEVER ));
39+
3640 rrFactory .requestResponseJsonFilter (properties );
3741
3842 assertTrue (pathMatcherFactory .createMatcher (null , null , null , null , null , 1024 ) instanceof AllJsonFilterPathMatcher );
@@ -81,6 +85,7 @@ public void testDisabled1() {
8185 request .setAnonymizes (Arrays .asList ("/a" ));
8286 request .setPrunes (Arrays .asList ("/b" ));
8387 request .setMaxPathMatches (1 );
88+ request .setMaxStringLength (1024 );
8489
8590 p .setRequest (request );
8691
@@ -142,24 +147,65 @@ public void createFilterWithValidation() {
142147 }
143148
144149 @ Test
145- public void createFilterWithoutValidation () {
150+ public void createFilterWithValidationMaxSize () {
146151 JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
147152
148153 JsonFilterProperties request = new JsonFilterProperties ();
149154 request .setAnonymizes (Arrays .asList ("/a" ));
150155 request .setPrunes (Arrays .asList ("/b" ));
151156 request .setMaxPathMatches (1 );
152- request .setMaxSize (1024 );
153157 request .setEnabled (true );
154158
155159 JsonFilterPathProperties jsonFilterPathProperties = new JsonFilterPathProperties ();
156160 jsonFilterPathProperties .setMatcher ("/myPath" );
157161 jsonFilterPathProperties .setRequest (request );
162+ jsonFilterPathProperties .setResponse (request );
158163
159164 jsonFiltersProperties .getPaths ().add (jsonFilterPathProperties );
160165
161166 JsonFilterReplacementsProperties replacements = new JsonFilterReplacementsProperties ();
162167
168+ replacements .setPrune ("a" );
169+ replacements .setAnonymize ("b" );
170+ replacements .setTruncate ("c" );
171+
172+ jsonFiltersProperties .setReplacements (replacements );
173+
174+ RequestResponseJsonFilter requestResponseJsonFilter = rrFactory .requestResponseJsonFilter (jsonFiltersProperties );
175+
176+ JsonFilter requestFilter = requestResponseJsonFilter .getRequestFilter ("/myPath" , true , 1024 );
177+
178+ assertTrue (requestFilter instanceof JacksonJsonFilter );
179+
180+ JsonFilter maxSizeFilter = requestResponseJsonFilter .getRequestFilter ("/myPath" , true , request .getMaxSize () + 1 );
181+ assertTrue (maxSizeFilter instanceof JacksonJsonFilter );
182+
183+ AbstractJsonFilter f = (AbstractJsonFilter ) maxSizeFilter ;
184+ assertEquals (Integer .MAX_VALUE , f .getMaxSize ());
185+
186+ JsonFilter responseFilter = requestResponseJsonFilter .getResponseFilter ("/myPath" , true , 1024 );
187+ assertTrue (responseFilter instanceof JacksonJsonFilter );
188+ }
189+
190+ @ Test
191+ public void createFilterWithoutValidationMaxSize () {
192+ JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
193+
194+ JsonFilterProperties request = new JsonFilterProperties ();
195+ request .setAnonymizes (Arrays .asList ("/a" ));
196+ request .setPrunes (Arrays .asList ("/b" ));
197+ request .setMaxPathMatches (1 );
198+ request .setMaxSize (1024 );
199+ request .setEnabled (true );
200+
201+ JsonFilterPathProperties jsonFilterPathProperties = new JsonFilterPathProperties ();
202+ jsonFilterPathProperties .setMatcher ("/myPath" );
203+ jsonFilterPathProperties .setRequest (request );
204+
205+ jsonFiltersProperties .setPaths (Arrays .asList (jsonFilterPathProperties ));
206+
207+ JsonFilterReplacementsProperties replacements = new JsonFilterReplacementsProperties ();
208+
163209 replacements .setPrune ("a" );
164210 replacements .setAnonymize ("b" );
165211 replacements .setTruncate ("c" );
@@ -182,10 +228,95 @@ public void createFilterWithoutValidation() {
182228
183229 }
184230
231+ @ Test
232+ public void createFilterWithoutValidation () {
233+ JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
234+
235+ JsonFilterProperties request = new JsonFilterProperties ();
236+ request .setAnonymizes (Arrays .asList ("/a" ));
237+ request .setPrunes (Arrays .asList ("/b" ));
238+ request .setMaxPathMatches (1 );
239+ request .setEnabled (true );
240+
241+ JsonFilterPathProperties jsonFilterPathProperties = new JsonFilterPathProperties ();
242+ jsonFilterPathProperties .setMatcher ("/myPath" );
243+ jsonFilterPathProperties .setRequest (request );
244+
245+ jsonFiltersProperties .getPaths ().add (jsonFilterPathProperties );
246+
247+ JsonFilterReplacementsProperties replacements = new JsonFilterReplacementsProperties ();
248+
249+ replacements .setPrune ("a" );
250+ replacements .setAnonymize ("b" );
251+ replacements .setTruncate ("c" );
252+
253+ jsonFiltersProperties .setReplacements (replacements );
254+
255+ RequestResponseJsonFilter requestResponseJsonFilter = rrFactory .requestResponseJsonFilter (jsonFiltersProperties );
256+
257+ JsonFilter filter = requestResponseJsonFilter .getRequestFilter ("/myPath" , false , 1024 );
258+ assertFalse (filter instanceof JacksonJsonFilter );
259+
260+ JsonFilter maxSizeFilter = requestResponseJsonFilter .getRequestFilter ("/myPath" , false , request .getMaxSize () + 1 );
261+ assertFalse (maxSizeFilter instanceof JacksonJsonFilter );
262+
263+ AbstractJsonFilter f = (AbstractJsonFilter ) maxSizeFilter ;
264+ assertEquals (f .getMaxSize (), Integer .MAX_VALUE );
265+
266+ assertFalse (filter .isRemovingWhitespace ());
267+
268+ // TODO on-demand does not make sense if also the max size is set
269+ assertFalse (maxSizeFilter .isRemovingWhitespace ());
270+
271+ }
272+
273+
185274 @ Test
186275 public void createFilterWithoutValidationAlwaysRemoveWhitespace () {
187276 JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
188277
278+ JsonFilterProperties request = new JsonFilterProperties ();
279+ request .setAnonymizes (Arrays .asList ("/a" ));
280+ request .setPrunes (Arrays .asList ("/b" ));
281+ request .setMaxPathMatches (1 );
282+ request .setEnabled (true );
283+
284+ JsonFilterPathProperties jsonFilterPathProperties = new JsonFilterPathProperties ();
285+ jsonFilterPathProperties .setMatcher ("/myPath" );
286+ jsonFilterPathProperties .setRequest (request );
287+
288+ jsonFiltersProperties .getPaths ().add (jsonFilterPathProperties );
289+ jsonFiltersProperties .getRequests ().setWhitespaceStrategy (WhitespaceStrategy .ALWAYS );
290+ assertTrue (jsonFiltersProperties .getRequests ().hasWhitespaceStrategy ());
291+
292+ JsonFilterReplacementsProperties replacements = new JsonFilterReplacementsProperties ();
293+
294+ replacements .setPrune ("a" );
295+ replacements .setAnonymize ("b" );
296+ replacements .setTruncate ("c" );
297+
298+ jsonFiltersProperties .setReplacements (replacements );
299+
300+ RequestResponseJsonFilter requestResponseJsonFilter = rrFactory .requestResponseJsonFilter (jsonFiltersProperties );
301+
302+ JsonFilter filter = requestResponseJsonFilter .getRequestFilter ("/myPath" , false , 1024 );
303+ assertFalse (filter instanceof JacksonJsonFilter );
304+
305+ JsonFilter maxSizeFilter = requestResponseJsonFilter .getRequestFilter ("/myPath" , false , request .getMaxSize () + 1 );
306+ assertFalse (maxSizeFilter instanceof JacksonJsonFilter );
307+
308+ AbstractJsonFilter f = (AbstractJsonFilter ) maxSizeFilter ;
309+ assertEquals (f .getMaxSize (), Integer .MAX_VALUE );
310+
311+ assertTrue (filter .isRemovingWhitespace ());
312+ assertTrue (maxSizeFilter .isRemovingWhitespace ());
313+ }
314+
315+
316+ @ Test
317+ public void createFilterWithoutValidationAlwaysRemoveWhitespaceMaxSize () {
318+ JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
319+
189320 JsonFilterProperties request = new JsonFilterProperties ();
190321 request .setAnonymizes (Arrays .asList ("/a" ));
191322 request .setPrunes (Arrays .asList ("/b" ));
@@ -223,11 +354,51 @@ public void createFilterWithoutValidationAlwaysRemoveWhitespace() {
223354 assertTrue (filter .isRemovingWhitespace ());
224355 assertTrue (maxSizeFilter .isRemovingWhitespace ());
225356 }
226-
357+
227358 @ Test
228359 public void createFilterWithoutValidationNeverRemoveWhitespace () {
229360 JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
230361
362+ JsonFilterProperties request = new JsonFilterProperties ();
363+ request .setAnonymizes (Arrays .asList ("/a" ));
364+ request .setPrunes (Arrays .asList ("/b" ));
365+ request .setMaxPathMatches (1 );
366+ request .setEnabled (true );
367+
368+ JsonFilterPathProperties jsonFilterPathProperties = new JsonFilterPathProperties ();
369+ jsonFilterPathProperties .setMatcher ("/myPath" );
370+ jsonFilterPathProperties .setRequest (request );
371+
372+ jsonFiltersProperties .getPaths ().add (jsonFilterPathProperties );
373+ jsonFiltersProperties .getRequests ().setWhitespaceStrategy (WhitespaceStrategy .NEVER );
374+
375+ JsonFilterReplacementsProperties replacements = new JsonFilterReplacementsProperties ();
376+
377+ replacements .setPrune ("a" );
378+ replacements .setAnonymize ("b" );
379+ replacements .setTruncate ("c" );
380+
381+ jsonFiltersProperties .setReplacements (replacements );
382+
383+ RequestResponseJsonFilter requestResponseJsonFilter = rrFactory .requestResponseJsonFilter (jsonFiltersProperties );
384+
385+ JsonFilter filter = requestResponseJsonFilter .getRequestFilter ("/myPath" , false , 1024 );
386+ assertFalse (filter instanceof JacksonJsonFilter );
387+
388+ JsonFilter maxSizeFilter = requestResponseJsonFilter .getRequestFilter ("/myPath" , false , request .getMaxSize () + 1 );
389+ assertFalse (maxSizeFilter instanceof JacksonJsonFilter );
390+
391+ AbstractJsonFilter f = (AbstractJsonFilter ) maxSizeFilter ;
392+ assertEquals (f .getMaxSize (), Integer .MAX_VALUE );
393+
394+ assertFalse (filter .isRemovingWhitespace ());
395+ assertFalse (maxSizeFilter .isRemovingWhitespace ());
396+ }
397+
398+ @ Test
399+ public void createFilterWithoutValidationNeverRemoveWhitespaceMaxSize () {
400+ JsonFiltersProperties jsonFiltersProperties = new JsonFiltersProperties ();
401+
231402 JsonFilterProperties request = new JsonFilterProperties ();
232403 request .setAnonymizes (Arrays .asList ("/a" ));
233404 request .setPrunes (Arrays .asList ("/b" ));
0 commit comments