From ba6a414d1d6446117653275ee1e51c2a156e6540 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 11 Dec 2014 16:10:55 -0700 Subject: [PATCH] fix double slashes in eureka server fixes gh-100 --- .../netflix/eureka/server/EurekaController.java | 8 ++++++-- .../server/ApplicationServletPathTests.java | 1 + .../netflix/eureka/server/ApplicationTests.java | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java index 0205e38d6..220b9b876 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java @@ -69,10 +69,14 @@ public class EurekaController { return map; } - private void populateBase(HttpServletRequest request, Map model) { + protected void populateBase(HttpServletRequest request, Map model) { String servletPath = request.getServletPath(); String path = request.getContextPath() + (servletPath==null ? "" : servletPath); - String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; + + if (!basePath.endsWith("/")) { + basePath += "/"; + } model.put("time", new Date()); model.put("basePath", basePath); diff --git a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java index 293439be1..681f92c2e 100644 --- a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java +++ b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java @@ -1,6 +1,7 @@ package org.springframework.cloud.netflix.eureka.server; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Map; diff --git a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java index 88d672175..fda544730 100644 --- a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java +++ b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java @@ -1,6 +1,8 @@ package org.springframework.cloud.netflix.eureka.server; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import java.util.Map; @@ -54,4 +56,17 @@ public class ApplicationTests { assertEquals(HttpStatus.OK, entity.getStatusCode()); } + @Test + public void noDoubleSlashes() { + String basePath = "http://localhost:" + port + "/"; + ResponseEntity entity = new TestRestTemplate().getForEntity( + basePath, String.class); + assertEquals(HttpStatus.OK, entity.getStatusCode()); + String body = entity.getBody(); + assertNotNull(body); + assertFalse("basePath contains double slashes", body.contains(basePath+"/")); + + } + + }