Fix /prefix test so it asserts a 404 as well as a 200

This commit is contained in:
Dave Syer
2017-06-28 09:41:04 +01:00
parent b9eb46c7bd
commit e4b181d0c4
2 changed files with 13 additions and 2 deletions

View File

@@ -30,6 +30,7 @@ import org.springframework.cloud.function.context.FunctionInspector;
import org.springframework.cloud.function.registry.FunctionCatalog; import org.springframework.cloud.function.registry.FunctionCatalog;
import org.springframework.cloud.function.web.flux.constants.WebRequestConstants; import org.springframework.cloud.function.web.flux.constants.WebRequestConstants;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@@ -80,6 +81,9 @@ public class FunctionHandlerMapping extends RequestMappingHandlerMapping
} }
String path = (String) request String path = (String) request
.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); .getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
if (StringUtils.hasText(prefix) && !path.startsWith(prefix)) {
return null;
}
if (path.startsWith(prefix)) { if (path.startsWith(prefix)) {
path = path.substring(prefix.length()); path = path.substring(prefix.length());
} }

View File

@@ -53,12 +53,19 @@ public class PrefixTests {
@Test @Test
public void words() throws Exception { public void words() throws Exception {
ResponseEntity<String> result = rest ResponseEntity<String> result = rest.exchange(
.exchange(RequestEntity.get(new URI("/functions/words")).build(), String.class); RequestEntity.get(new URI("/functions/words")).build(), String.class);
assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(result.getBody()).isEqualTo("[\"foo\",\"bar\"]"); assertThat(result.getBody()).isEqualTo("[\"foo\",\"bar\"]");
} }
@Test
public void missing() throws Exception {
ResponseEntity<String> result = rest
.exchange(RequestEntity.get(new URI("/words")).build(), String.class);
assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}
@EnableAutoConfiguration @EnableAutoConfiguration
@org.springframework.boot.test.context.TestConfiguration @org.springframework.boot.test.context.TestConfiguration
protected static class TestConfiguration { protected static class TestConfiguration {