@@ -428,4 +428,100 @@ public void getFirewalledRequestWhenAllowUrlEncodedSlashAndUppercaseEncodedPathT
428428
429429 this .firewall .getFirewalledRequest (request );
430430 }
431+
432+ @ Test
433+ public void getFirewalledRequestWhenAllowUrlLowerCaseEncodedDoubleSlashThenNoException () throws Exception {
434+ this .firewall .setAllowUrlEncodedSlash (true );
435+ this .firewall .setAllowUrlEncodedDoubleSlash (true );
436+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
437+ request .setRequestURI ("/context-root/a/b%2f%2fc" );
438+ request .setContextPath ("/context-root" );
439+ request .setServletPath ("" );
440+ request .setPathInfo ("/a/b//c" );
441+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
442+ }
443+
444+ @ Test
445+ public void getFirewalledRequestWhenAllowUrlUpperCaseEncodedDoubleSlashThenNoException () throws Exception {
446+ this .firewall .setAllowUrlEncodedSlash (true );
447+ this .firewall .setAllowUrlEncodedDoubleSlash (true );
448+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
449+ request .setRequestURI ("/context-root/a/b%2F%2Fc" );
450+ request .setContextPath ("/context-root" );
451+ request .setServletPath ("" );
452+ request .setPathInfo ("/a/b//c" );
453+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
454+ }
455+
456+ @ Test
457+ public void getFirewalledRequestWhenAllowUrlLowerCaseAndUpperCaseEncodedDoubleSlashThenNoException ()
458+ throws Exception {
459+ this .firewall .setAllowUrlEncodedSlash (true );
460+ this .firewall .setAllowUrlEncodedDoubleSlash (true );
461+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
462+ request .setRequestURI ("/context-root/a/b%2f%2Fc" );
463+ request .setContextPath ("/context-root" );
464+ request .setServletPath ("" );
465+ request .setPathInfo ("/a/b//c" );
466+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
467+ }
468+
469+ @ Test
470+ public void getFirewalledRequestWhenAllowUrlUpperCaseAndLowerCaseEncodedDoubleSlashThenNoException ()
471+ throws Exception {
472+ this .firewall .setAllowUrlEncodedSlash (true );
473+ this .firewall .setAllowUrlEncodedDoubleSlash (true );
474+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
475+ request .setRequestURI ("/context-root/a/b%2F%2fc" );
476+ request .setContextPath ("/context-root" );
477+ request .setServletPath ("" );
478+ request .setPathInfo ("/a/b//c" );
479+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
480+ }
481+
482+ @ Test
483+ public void getFirewalledRequestWhenRemoveFromUpperCaseEncodedUrlBlacklistThenNoException () throws Exception {
484+ this .firewall .setAllowUrlEncodedSlash (true );
485+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
486+ request .setRequestURI ("/context-root/a/b%2F%2Fc" );
487+ this .firewall .getEncodedUrlBlacklist ().removeAll (Arrays .asList ("%2F%2F" ));
488+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
489+ }
490+
491+ @ Test
492+ public void getFirewalledRequestWhenRemoveFromLowerCaseEncodedUrlBlacklistThenNoException () throws Exception {
493+ this .firewall .setAllowUrlEncodedSlash (true );
494+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
495+ request .setRequestURI ("/context-root/a/b%2f%2fc" );
496+ this .firewall .getEncodedUrlBlacklist ().removeAll (Arrays .asList ("%2f%2f" ));
497+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
498+ }
499+
500+ @ Test
501+ public void getFirewalledRequestWhenRemoveFromLowerCaseAndUpperCaseEncodedUrlBlacklistThenNoException ()
502+ throws Exception {
503+ this .firewall .setAllowUrlEncodedSlash (true );
504+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
505+ request .setRequestURI ("/context-root/a/b%2f%2Fc" );
506+ this .firewall .getEncodedUrlBlacklist ().removeAll (Arrays .asList ("%2f%2F" ));
507+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
508+ }
509+
510+ @ Test
511+ public void getFirewalledRequestWhenRemoveFromUpperCaseAndLowerCaseEncodedUrlBlacklistThenNoException ()
512+ throws Exception {
513+ this .firewall .setAllowUrlEncodedSlash (true );
514+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
515+ request .setRequestURI ("/context-root/a/b%2F%2fc" );
516+ this .firewall .getEncodedUrlBlacklist ().removeAll (Arrays .asList ("%2F%2f" ));
517+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
518+ }
519+
520+ @ Test
521+ public void getFirewalledRequestWhenRemoveFromDecodedUrlBlacklistThenNoException () throws Exception {
522+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "" );
523+ request .setPathInfo ("/a/b//c" );
524+ this .firewall .getDecodedUrlBlacklist ().removeAll (Arrays .asList ("//" ));
525+ assertThatCode (() -> this .firewall .getFirewalledRequest (request )).doesNotThrowAnyException ();
526+ }
431527}
0 commit comments