Use nested path variables instead of Servlet's
Remove the overriden pathVariable method from the nested request wrapper,so that the merged attributes are used instead of the ones provided by servlet. Closes gh-26163
This commit is contained in:
@@ -22,6 +22,7 @@ import java.util.Optional;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.web.servlet.handler.PathPatternsTestUtils;
|
||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
@@ -97,4 +98,20 @@ public class RouterFunctionsTests {
|
||||
assertThat(resultHandlerFunction.isPresent()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nestPathVariable() {
|
||||
HandlerFunction<ServerResponse> handlerFunction = request -> ServerResponse.ok().build();
|
||||
RequestPredicate requestPredicate = request -> request.pathVariable("foo").equals("bar");
|
||||
RouterFunction<ServerResponse> nestedFunction = RouterFunctions.route(requestPredicate, handlerFunction);
|
||||
|
||||
RouterFunction<ServerResponse> result = RouterFunctions.nest(RequestPredicates.path("/{foo}"), nestedFunction);
|
||||
assertThat(result).isNotNull();
|
||||
|
||||
MockHttpServletRequest servletRequest = new MockHttpServletRequest("GET", "/bar");
|
||||
ServerRequest request = new DefaultServerRequest(servletRequest, Collections.emptyList());
|
||||
Optional<HandlerFunction<ServerResponse>> resultHandlerFunction = result.route(request);
|
||||
assertThat(resultHandlerFunction.isPresent()).isTrue();
|
||||
assertThat(resultHandlerFunction.get()).isEqualTo(handlerFunction);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user