From e4b181d0c4eea25bfd3b416e4cf98a6499f365ff Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 28 Jun 2017 09:41:04 +0100 Subject: [PATCH] Fix /prefix test so it asserts a 404 as well as a 200 --- .../function/web/flux/FunctionHandlerMapping.java | 4 ++++ .../cloud/function/web/PrefixTests.java | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/FunctionHandlerMapping.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/FunctionHandlerMapping.java index 3c9f03edf..1db849443 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/FunctionHandlerMapping.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/FunctionHandlerMapping.java @@ -30,6 +30,7 @@ import org.springframework.cloud.function.context.FunctionInspector; import org.springframework.cloud.function.registry.FunctionCatalog; import org.springframework.cloud.function.web.flux.constants.WebRequestConstants; import org.springframework.context.annotation.Configuration; +import org.springframework.util.StringUtils; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; @@ -80,6 +81,9 @@ public class FunctionHandlerMapping extends RequestMappingHandlerMapping } String path = (String) request .getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); + if (StringUtils.hasText(prefix) && !path.startsWith(prefix)) { + return null; + } if (path.startsWith(prefix)) { path = path.substring(prefix.length()); } diff --git a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/PrefixTests.java b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/PrefixTests.java index 8250b6707..606ca54fe 100644 --- a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/PrefixTests.java +++ b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/PrefixTests.java @@ -53,12 +53,19 @@ public class PrefixTests { @Test public void words() throws Exception { - ResponseEntity result = rest - .exchange(RequestEntity.get(new URI("/functions/words")).build(), String.class); + ResponseEntity result = rest.exchange( + RequestEntity.get(new URI("/functions/words")).build(), String.class); assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(result.getBody()).isEqualTo("[\"foo\",\"bar\"]"); } + @Test + public void missing() throws Exception { + ResponseEntity result = rest + .exchange(RequestEntity.get(new URI("/words")).build(), String.class); + assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); + } + @EnableAutoConfiguration @org.springframework.boot.test.context.TestConfiguration protected static class TestConfiguration {