@@ -428,4 +428,100 @@ public void getFirewalledRequestWhenAllowUrlEncodedSlashAndUppercaseEncodedPathT
428
428
429
429
this .firewall .getFirewalledRequest (request );
430
430
}
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
+ }
431
527
}
0 commit comments