]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11073 Remove trailing slash in "Server base URL"
authorJulien HENRY <julien.henry@sonarsource.com>
Tue, 31 Jul 2018 12:52:34 +0000 (14:52 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 2 Aug 2018 18:21:33 +0000 (20:21 +0200)
To fix Bitbucket/GitHub oauth, and probably many other places

server/sonar-server-common/src/main/java/org/sonar/server/platform/UrlSettings.java
server/sonar-server-common/src/test/java/org/sonar/server/platform/UrlSettingsTest.java
sonar-plugin-api/src/main/java/org/sonar/api/config/EmailSettings.java
sonar-plugin-api/src/main/java/org/sonar/api/platform/Server.java
sonar-plugin-api/src/test/java/org/sonar/api/config/EmailSettingsTest.java

index d2d3cd300ee0109fb6bda15e1eeda9b7541bb85b..94f00608de329b5673bfe57ed336c68509a5691f 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.server.platform;
 
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.ce.ComputeEngineSide;
 import org.sonar.api.config.Configuration;
 import org.sonar.api.server.ServerSide;
@@ -52,7 +53,8 @@ public class UrlSettings {
     if (isEmpty(url)) {
       url = computeBaseUrl();
     }
-    return url;
+    // Remove trailing slashes
+    return StringUtils.removeEnd(url, "/");
   }
 
   public String getContextPath() {
index e6ba2a0305c1b6cf66db3164a1ba1a455bb343e3..c0c90874a76c9dc665240d6cdbf12ddc823bcf3e 100644 (file)
@@ -57,6 +57,13 @@ public class UrlSettingsTest {
     assertThat(underTest().getBaseUrl()).isEqualTo("http://mydomain.com");
   }
 
+  @Test
+  public void remove_trailing_slash() {
+    settings.setProperty("sonar.core.serverBaseURL", "http://mydomain.com/");
+
+    assertThat(underTest().getBaseUrl()).isEqualTo("http://mydomain.com");
+  }
+
   @Test
   public void is_secured_on_https_server() {
     settings.setProperty("sonar.core.serverBaseURL", "https://mydomain.com");
index 8a344355a942b176e7b237a5492fe69d084e67a4..850d67eccfc90326888fb30276ab2328f24c99ee 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.api.config;
 
 import java.util.List;
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.PropertyType;
 import org.sonar.api.ce.ComputeEngineSide;
 import org.sonar.api.server.ServerSide;
@@ -94,7 +95,9 @@ public class EmailSettings {
   }
 
   public String getServerBaseURL() {
-    return get(SERVER_BASE_URL, SERVER_BASE_URL_DEFAULT_VALUE);
+    return config.get(SERVER_BASE_URL)
+      .map(t -> StringUtils.removeEnd(t, "/"))
+      .orElse(SERVER_BASE_URL_DEFAULT_VALUE);
   }
 
   private String get(String key, String defaultValue) {
index 2ab2a49336dcd4e3ed53f91b36648a536fdc98d9..0c3b6b4c862f9438b6453afc80e957a906fd2e80 100644 (file)
@@ -86,7 +86,7 @@ public abstract class Server {
   public abstract String getContextPath();
 
   /**
-   * Return the public root url, for instance : https://nemo.sonarqube.org.
+   * Return the public root url, without trailing slash, for instance : https://nemo.sonarqube.org.
    * Default value is {@link org.sonar.api.CoreProperties#SERVER_BASE_URL_DEFAULT_VALUE}
    *
    * @since 5.4
index 466bcd59344b234c2c9872059152ebffede56a83..d96d6e5a28adbfbf000937139aa4f22c88586de8 100644 (file)
  */
 package org.sonar.api.config;
 
+import org.apache.commons.lang.RandomStringUtils;
 import org.junit.Test;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.config.internal.MapSettings;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.sonar.api.CoreProperties.SERVER_BASE_URL;
 
 public class EmailSettingsTest {
 
-  private EmailSettings underTest = new EmailSettings(new MapSettings().asConfig());
+  private MapSettings settings = new MapSettings();
+  private EmailSettings underTest = new EmailSettings(settings.asConfig());
 
   @Test
   public void should_return_default_values() {
@@ -42,6 +45,21 @@ public class EmailSettingsTest {
     assertThat(underTest.getServerBaseURL()).isEqualTo(CoreProperties.SERVER_BASE_URL_DEFAULT_VALUE);
   }
 
+  @Test
+  public void getServerBaseUrl_returns_property_value() {
+    String expected = RandomStringUtils.randomAlphabetic(15);
+    settings.setProperty(SERVER_BASE_URL, expected);
+
+    assertThat(underTest.getServerBaseURL()).isEqualTo(expected);
+  }
+
+  @Test
+  public void getServerBaseUrl_removes_trailing_slash_from_property_value() {
+    settings.setProperty(SERVER_BASE_URL, "http://www.acme.com/");
+
+    assertThat(underTest.getServerBaseURL()).isEqualTo("http://www.acme.com");
+  }
+
   @Test
   public void return_definitions() {
     assertThat(EmailSettings.definitions()).hasSize(8);