@ -31,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -31,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/ * *
* @author Rob Winch
* @author Eddú Meléndez
* @author Jinwoo Bae
* /
public class StrictHttpFirewallTests {
@ -723,6 +724,14 @@ public class StrictHttpFirewallTests {
@@ -723,6 +724,14 @@ public class StrictHttpFirewallTests {
assertThatExceptionOfType ( RequestRejectedException . class ) . isThrownBy ( ( ) - > request . getHeader ( "bad name" ) ) ;
}
@Test
public void getFirewalledRequestWhenHeaderNameNotAllowedWithAugmentedHeaderNamesThenException ( ) {
this . firewall
. setAllowedHeaderNames ( StrictHttpFirewall . ALLOWED_HEADER_NAMES . and ( ( name ) - > ! name . equals ( "bad name" ) ) ) ;
HttpServletRequest request = this . firewall . getFirewalledRequest ( this . request ) ;
assertThatExceptionOfType ( RequestRejectedException . class ) . isThrownBy ( ( ) - > request . getHeader ( "bad name" ) ) ;
}
@Test
public void getFirewalledRequestGetHeaderWhenNotAllowedHeaderValueThenException ( ) {
this . request . addHeader ( "good name" , "bad value" ) ;
@ -731,6 +740,15 @@ public class StrictHttpFirewallTests {
@@ -731,6 +740,15 @@ public class StrictHttpFirewallTests {
assertThatExceptionOfType ( RequestRejectedException . class ) . isThrownBy ( ( ) - > request . getHeader ( "good name" ) ) ;
}
@Test
public void getFirewalledRequestWhenHeaderValueNotAllowedWithAugmentedHeaderValuesThenException ( ) {
this . request . addHeader ( "good name" , "bad value" ) ;
this . firewall . setAllowedHeaderValues (
StrictHttpFirewall . ALLOWED_HEADER_VALUES . and ( ( value ) - > ! value . equals ( "bad value" ) ) ) ;
HttpServletRequest request = this . firewall . getFirewalledRequest ( this . request ) ;
assertThatExceptionOfType ( RequestRejectedException . class ) . isThrownBy ( ( ) - > request . getHeader ( "good name" ) ) ;
}
@Test
public void getFirewalledRequestGetDateHeaderWhenControlCharacterInHeaderNameThenException ( ) {
this . request . addHeader ( "Bad\0Name" , "some value" ) ;
@ -840,6 +858,16 @@ public class StrictHttpFirewallTests {
@@ -840,6 +858,16 @@ public class StrictHttpFirewallTests {
. isThrownBy ( ( ) - > request . getParameterValues ( "Something" ) ) ;
}
@Test
public void getFirewalledRequestWhenParameterValueNotAllowedWithAugmentedParameterValuesThenException ( ) {
this . request . addParameter ( "Something" , "bad value" ) ;
this . firewall . setAllowedParameterValues (
StrictHttpFirewall . ALLOWED_PARAMETER_VALUES . and ( ( value ) - > ! value . equals ( "bad value" ) ) ) ;
HttpServletRequest request = this . firewall . getFirewalledRequest ( this . request ) ;
assertThatExceptionOfType ( RequestRejectedException . class )
. isThrownBy ( ( ) - > request . getParameterValues ( "Something" ) ) ;
}
@Test
public void getFirewalledRequestGetParameterValuesWhenNotAllowedInParameterNameThenException ( ) {
this . firewall . setAllowedParameterNames ( ( value ) - > ! value . equals ( "bad name" ) ) ;
@ -849,6 +877,16 @@ public class StrictHttpFirewallTests {
@@ -849,6 +877,16 @@ public class StrictHttpFirewallTests {
. isThrownBy ( ( ) - > request . getParameterValues ( "bad name" ) ) ;
}
@Test
public void getFirewalledRequestWhenParameterNameNotAllowedWithAugmentedParameterNamesThenException ( ) {
this . request . addParameter ( "bad name" , "good value" ) ;
this . firewall . setAllowedParameterNames (
StrictHttpFirewall . ALLOWED_PARAMETER_NAMES . and ( ( value ) - > ! value . equals ( "bad name" ) ) ) ;
HttpServletRequest request = this . firewall . getFirewalledRequest ( this . request ) ;
assertThatExceptionOfType ( RequestRejectedException . class )
. isThrownBy ( ( ) - > request . getParameterValues ( "bad name" ) ) ;
}
// gh-9598
@Test
public void getFirewalledRequestGetParameterWhenNameIsNullThenIllegalArgumentException ( ) {