diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-04-12 18:54:22 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-04-12 20:57:24 +0200 |
commit | 8cf392f9573d4061bef71e426c4940426dd121a7 (patch) | |
tree | b02fff7cd23764f9ed631766d49ff5bc2280c462 /container-core | |
parent | 01892669e2becfc0999e75332394f8496583c425 (diff) |
Create valid builder when URI has implicit port
Diffstat (limited to 'container-core')
-rw-r--r-- | container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java | 5 | ||||
-rw-r--r-- | container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java | 24 |
2 files changed, 22 insertions, 7 deletions
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java index 0a31151921d..084aa01ec40 100644 --- a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java +++ b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java @@ -349,7 +349,10 @@ class RestApiImpl implements RestApi { @Override public ObjectMapper jacksonJsonMapper() { return jacksonJsonMapper; } @Override public UriBuilder uriBuilder() { URI uri = request.getUri(); - return new UriBuilder(uri.getScheme() + "://" + uri.getHost() + ':' + uri.getPort()); + int uriPort = uri.getPort(); + return uriPort != -1 + ? new UriBuilder(uri.getScheme() + "://" + uri.getHost() + ':' + uriPort) + : new UriBuilder(uri.getScheme() + "://" + uri.getHost()); } private class PathParametersImpl implements RestApi.RequestContext.PathParameters { diff --git a/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java b/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java index 1de8184ce22..06fc6d80741 100644 --- a/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java +++ b/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java @@ -102,13 +102,25 @@ class RestApiImplTest { verifyJsonResponse(restApi, Method.POST, "/api", rawJson, 200, rawJson); } + @Test + public void uri_builder_creates_valid_uri_prefix() { + RestApi restApi = RestApi.builder() + .addRoute(route("/test").get(ctx -> new MessageResponse(ctx.uriBuilder().toString()))) + .build(); + verifyJsonResponse(restApi, Method.GET, "/test", null, 200, "{\"message\":\"http://localhost\"}"); + } + private static void verifyJsonResponse(RestApi restApi, Method method, String path, String requestContent, int expectedStatusCode, String expectedJson) { - HttpRequest testRequest = requestContent != null ? - HttpRequest.createTestRequest( - path, method, - new ByteArrayInputStream(requestContent.getBytes(StandardCharsets.UTF_8)), - Map.of("Content-Type", "application/json")) : - HttpRequest.createTestRequest(path, method); + HttpRequest testRequest; + String uri = "http://localhost" + path; + if (requestContent != null) { + testRequest = HttpRequest.createTestRequest( + uri, method, + new ByteArrayInputStream(requestContent.getBytes(StandardCharsets.UTF_8)), + Map.of("Content-Type", "application/json")); + } else { + testRequest = HttpRequest.createTestRequest(uri, method); + } HttpResponse response = restApi.handleRequest(testRequest); assertEquals(expectedStatusCode, response.getStatus()); if (expectedJson != null) { |