@ -31,8 +31,9 @@ import org.springframework.web.service.annotation.GetExchange;
@@ -31,8 +31,9 @@ import org.springframework.web.service.annotation.GetExchange;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException ;
/ * *
* T ests for { @link RequestHeaderArgumentResolver } .
* Unit t ests for { @link RequestHeaderArgumentResolver } .
*
* @author Olga Maciaszek - Sharma
* /
@ -42,104 +43,94 @@ class RequestHeaderArgumentResolverTests {
@@ -42,104 +43,94 @@ class RequestHeaderArgumentResolverTests {
private final Service service = this . clientAdapter . createService ( Service . class ) ;
@Test
void shouldResolveSingleValueRequestHeader ( ) {
this . service . executeString ( "test" ) ;
assertRequestHeaders ( "id" , "test" ) ;
}
@Test
void shouldResolveReques tHeaderWithNameFromAnnotationName ( ) {
this . service . executeNamed ( "test" ) ;
void stringHeader ( ) {
this . service . executeString ( "test" ) ;
assertRequestHeaders ( "id" , "test" ) ;
}
@Test
void shouldResolveRequestHeaderNameFromValue ( ) {
this . service . executeNamedWithValue ( "test" ) ;
assertRequestHeaders ( "test " , "test " ) ;
void objectHeader ( ) {
this . service . execute ( Boolean . TRUE ) ;
assertRequestHeaders ( "id " , "tru e" ) ;
}
@Test
void shouldResolveObjectValueRequest Header( ) {
this . service . execute ( Boolean . TRUE ) ;
assertRequestHeaders ( "id" , "tru e" ) ;
void named Header( ) {
this . service . executeNamed ( "test" ) ;
assertRequestHeaders ( "id" , "test " ) ;
}
@Test
void shouldReso lveL istReque stHeader( ) {
void listHeader ( ) {
this . service . execute ( List . of ( "test1" , Boolean . TRUE , "test3" ) ) ;
assertRequestHeaders ( "id" , "test1" , "true" , "test3" ) ;
assertRequestHeaders ( "mult iValueHea der " , "test1" , "true" , "test3" ) ;
}
@Test
void shouldResolveArrayRequest Header( ) {
void array Header( ) {
this . service . execute ( "test1" , Boolean . FALSE , "test3" ) ;
assertRequestHeaders ( "id" , "test1" , "false" , "test3" ) ;
assertRequestHeaders ( "mult iValueHea der " , "test1" , "false" , "test3" ) ;
}
@Test
void shouldResolveRequestHeadersFromMap ( ) {
this . service . executeMap ( Maps . of ( Boolean . TRUE , "true" , Boolean . FALSE , "false" ) ) ;
assertRequestHeaders ( "true " , "true" ) ;
assertRequestHeaders ( "false " , "false" ) ;
void mapHeader ( ) {
this . service . executeMap ( Maps . of ( "header1" , "true" , "header2" , "false" ) ) ;
assertRequestHeaders ( "header1 " , "true" ) ;
assertRequestHeaders ( "header2 " , "false" ) ;
}
@Test
void shouldThrowExceptionWhenRequired HeaderNull( ) {
assertThatIllegalArgumentException ( )
. isThrownBy ( ( ) - > this . service . executeString ( null ) ) ;
void map HeaderNull( ) {
this . service . executeMap ( null ) ;
assertThat ( getActualHeaders ( ) ) . isEmpty ( ) ;
}
@Test
void shouldIgnoreNullWhenHeaderNotRequired ( ) {
this . service . executeNotRequired ( null ) ;
assertThat ( getActualHeaders ( ) . get ( "id" ) ) . isNull ( ) ;
void mapWithOptional ( ) {
this . service . executeOptionalMapValue ( Map . of ( "id" , Optional . of ( "test" ) ) ) ;
assertRequestHeaders ( "id" , "test" ) ;
}
@Test
void shouldIgnoreNullMapValue ( ) {
this . service . executeMap ( null ) ;
assertThat ( getActualHeaders ( ) ) . isEmpty ( ) ;
void nullHeaderRequired ( ) {
assertThatIllegalArgumentException ( ) . isThrownBy ( ( ) - > this . service . executeString ( null ) ) ;
}
@Test
void shouldResolveRequestHeaderFromOptionalArgumentWithConversion ( ) {
this . service . executeOptional ( Optional . of ( Boolean . TRUE ) ) ;
assertRequestHeaders ( "id" , "true" ) ;
void nullHeaderNotRequired ( ) {
this . service . executeNotRequired ( null ) ;
assertThat ( getActualHeaders ( ) . get ( "id" ) ) . isNull ( ) ;
}
@Test
void sh ouldResolveRequestHeaderFromO ptionalArgument ( ) {
void optional ( ) {
this . service . executeOptional ( Optional . of ( "test" ) ) ;
assertRequestHeaders ( "id" , "test" ) ;
}
@Test
void shouldThrowExceptionForEmptyOptional ( ) {
assertThatIllegalArgumentException ( ) . isThrownBy ( ( ) - > this . service . execute ( Optional . empty ( ) ) ) ;
void optionalWithConversion ( ) {
this . service . executeOptional ( Optional . of ( Boolean . TRUE ) ) ;
assertRequestHeaders ( "id" , "true" ) ;
}
@Test
void shouldIgnoreEmptyOptionalWhenNotRequired ( ) {
this . service . executeOptionalNotRequired ( Optional . empty ( ) ) ;
void optionalEmpty ( ) {
this . service . executeOptional ( Optional . empty ( ) ) ;
assertThat ( getActualHeaders ( ) . get ( "id" ) ) . isNull ( ) ;
}
@Test
void shouldResolveRequestHeaderFromOptionalMapValue ( ) {
this . service . executeOptionalMapValue ( Map . of ( "id" , Optional . of ( "test" ) ) ) ;
assertRequestHeaders ( "id" , "test" ) ;
}
@Test
void shouldReplaceNullValueWithDefaultWhenAvailable ( ) {
void defaultValueWithNull ( ) {
this . service . executeWithDefaultValue ( null ) ;
assertRequestHeaders ( "id" , "default" ) ;
}
@Test
void shouldReplaceEmptyOptionalValueWithDefaultWhenAvailable ( ) {
void defaultValueWithOptional ( ) {
this . service . executeOptionalWithDefaultValue ( Optional . empty ( ) ) ;
assertRequestHeaders ( "id" , "default" ) ;
}
@ -152,47 +143,43 @@ class RequestHeaderArgumentResolverTests {
@@ -152,47 +143,43 @@ class RequestHeaderArgumentResolverTests {
return this . clientAdapter . getRequestValues ( ) . getHeaders ( ) ;
}
@SuppressWarnings ( "OptionalUsedAsFieldOrParameterType" )
private interface Service {
@GetExchange
void executeString ( @Nullable @RequestHeader String id ) ;
@GetExchange
void executeNotRequired ( @Nullable @RequestHeader ( required = false ) String id ) ;
@GetExchange
void execute ( @RequestHeader Object id ) ;
@GetExchange
void execute ( @RequestHeader List < Object > i d ) ;
void executeNamed ( @RequestHeader ( name = "id" ) String employeeI d) ;
@GetExchange
void execute ( @RequestHeader Object . . . id ) ;
void execute ( @RequestHeader List < Object > multiValueHeader ) ;
@GetExchange
void executeMap ( @Nullable @RequestHeader Map < Object , String > id ) ;
void execute ( @RequestHeader Object . . . multiValueHeader ) ;
@GetExchange
void executeOptionalMapValue ( @RequestHeader Map < Object , Optional < String > > id ) ;
void executeMap ( @Nullable @RequestHeader Map < String , String > id ) ;
@GetExchange
void executeOptional ( @RequestHeader Optional < Object > id ) ;
void executeOptionalMapValue ( @RequestHeader Map < String , Optional < String > > headers ) ;
@GetExchange
void executeOptionalNotRequired ( @RequestHeader ( required = false ) Optional < String > id ) ;
@GetExchange
void executeNamedWithValue ( @Nullable @RequestHeader ( name = "id" , value = "test" ) String employeeId ) ;
void executeNotRequired ( @Nullable @RequestHeader ( required = false ) String id ) ;
@GetExchange
void executeNamed ( @RequestHeader ( name = "id" ) String employeeI d ) ;
void executeOptional ( @RequestHeader Optional < Object > id ) ;
@GetExchange
void executeWithDefaultValue ( @Nullable @RequestHeader ( defaultValue = "default" ) String id ) ;
@GetExchange
void executeOptionalWithDefaultValue ( @Nullable @RequestHeader ( defaultValue = "default" ) Optional < Object > id ) ;
void executeOptionalWithDefaultValue ( @RequestHeader ( defaultValue = "default" ) Optional < Object > id ) ;
}
}