diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2017-10-04 16:35:14 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2017-10-04 17:27:38 +0200 |
commit | 1987c0b34447aaf12b7f248516f3be77024fbfaa (patch) | |
tree | 4a8c335b79727a59b7d855883b37b1c8957abac5 /server | |
parent | 4939863d74224188de391caf19a955322dc3f0b9 (diff) | |
download | sonarqube-1987c0b34447aaf12b7f248516f3be77024fbfaa.tar.gz sonarqube-1987c0b34447aaf12b7f248516f3be77024fbfaa.zip |
SONAR-9263 Drop unused property sonar.web.dev
Diffstat (limited to 'server')
11 files changed, 30 insertions, 166 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java b/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java index c48cbfe9634..368c3add037 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java @@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletResponse; import org.sonar.api.platform.Server; import org.sonar.api.server.authentication.OAuth2IdentityProvider; import org.sonar.api.server.authentication.UserIdentity; -import org.sonar.api.utils.MessageException; +import org.sonar.api.utils.log.Loggers; import org.sonar.db.user.UserDto; import org.sonar.server.authentication.event.AuthenticationEvent; import org.sonar.server.user.ThreadLocalUserSession; @@ -77,8 +77,9 @@ public class OAuth2ContextFactory { @Override public String getCallbackUrl() { String publicRootUrl = server.getPublicRootUrl(); - if (publicRootUrl.startsWith("http:") && !server.isDev()) { - throw MessageException.of(format("The server url should be configured in https, please update the property '%s'", SERVER_BASE_URL)); + if (publicRootUrl.startsWith("http:")) { + Loggers.get(getClass()).warn( + "For security reasons, the server URL used for OAuth authentications should be https. Please update the property '{}'.", SERVER_BASE_URL); } return publicRootUrl + CALLBACK_PATH + identityProvider.getKey(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/server/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 4596c883b81..3789ddb8b29 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -136,26 +136,6 @@ public class Platform { return getDatabaseStatus() != DatabaseVersion.Status.UP_TO_DATE; } - public void restart() { - restart(Startup.ALL); - } - - protected void restart(Startup startup) { - // switch currentLevel on level1 now to avoid exposing a container in the process of stopping - currentLevel = level1; - autoStarter = null; - - // stop containers - stopSafeModeContainer(); - stopLevel234Containers(); - - // no need to initialize database connection, so level 1 is skipped - startLevel2Container(); - startLevel34Containers(); - currentLevel = level4; - executeStartupTasks(startup); - } - public boolean isStarted() { return status() == Status.UP; } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerImpl.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerImpl.java index 03e55161cd6..7a5c1217d55 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerImpl.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerImpl.java @@ -93,7 +93,7 @@ public class ServerImpl extends Server { @Override public boolean isDev() { - return urlSettings.isDev(); + return false; } @Override diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/UrlSettings.java b/server/sonar-server/src/main/java/org/sonar/server/platform/UrlSettings.java index c56693c5921..bb90127c376 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/UrlSettings.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/UrlSettings.java @@ -59,10 +59,6 @@ public class UrlSettings { return contextPath; } - public boolean isDev() { - return config.getBoolean("sonar.web.dev").orElse(false); - } - public boolean isSecured() { return getBaseUrl().startsWith("https://"); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/RestartAction.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/RestartAction.java index 00d5aaebdc0..6660142854c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/RestartAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/RestartAction.java @@ -19,7 +19,6 @@ */ package org.sonar.server.platform.ws; -import org.sonar.api.config.Configuration; import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; @@ -27,7 +26,6 @@ import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.server.app.ProcessCommandWrapper; import org.sonar.server.app.RestartFlagHolder; -import org.sonar.server.platform.Platform; import org.sonar.server.platform.WebServer; import org.sonar.server.user.UserSession; @@ -39,17 +37,13 @@ public class RestartAction implements SystemWsAction { private static final Logger LOGGER = Loggers.get(RestartAction.class); private final UserSession userSession; - private final Configuration config; - private final Platform platform; private final ProcessCommandWrapper processCommandWrapper; private final RestartFlagHolder restartFlagHolder; private final WebServer webServer; - public RestartAction(UserSession userSession, Configuration config, Platform platform, ProcessCommandWrapper processCommandWrapper, RestartFlagHolder restartFlagHolder, - WebServer webServer) { + public RestartAction(UserSession userSession, ProcessCommandWrapper processCommandWrapper, RestartFlagHolder restartFlagHolder, + WebServer webServer) { this.userSession = userSession; - this.config = config; - this.platform = platform; this.processCommandWrapper = processCommandWrapper; this.restartFlagHolder = restartFlagHolder; this.webServer = webServer; @@ -69,23 +63,12 @@ public class RestartAction implements SystemWsAction { if (!webServer.isStandalone()) { throw new IllegalArgumentException("Restart not allowed for cluster nodes"); } - if (config.getBoolean("sonar.web.dev").orElse(false)) { - LOGGER.info("Fast restarting WebServer..."); - restartFlagHolder.set(); - try { - platform.restart(); - LOGGER.info("WebServer restarted"); - } finally { - restartFlagHolder.unset(); - } - } else { - userSession.checkIsSystemAdministrator(); - LOGGER.info("SonarQube restart requested by {}", userSession.getLogin()); - restartFlagHolder.set(); - processCommandWrapper.requestSQRestart(); - } - response.noContent(); + userSession.checkIsSystemAdministrator(); + + LOGGER.info("SonarQube restart requested by {}", userSession.getLogin()); + restartFlagHolder.set(); + processCommandWrapper.requestSQRestart(); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java index 161d52bd9ea..d3961427255 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java @@ -29,8 +29,9 @@ import org.junit.rules.ExpectedException; import org.sonar.api.platform.Server; import org.sonar.api.server.authentication.OAuth2IdentityProvider; import org.sonar.api.server.authentication.UserIdentity; -import org.sonar.api.utils.MessageException; import org.sonar.api.utils.System2; +import org.sonar.api.utils.log.LogTester; +import org.sonar.api.utils.log.LoggerLevel; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.DbTester; @@ -52,7 +53,6 @@ public class OAuth2ContextFactoryTest { private static final String PROVIDER_KEY = "github"; private static final String SECURED_PUBLIC_ROOT_URL = "https://mydomain.com"; - private static final String NOT_SECURED_PUBLIC_URL = "http://mydomain.com"; private static final String PROVIDER_NAME = "provider name"; private static final UserIdentity USER_IDENTITY = UserIdentity.builder() .setProviderLogin("johndoo") @@ -67,16 +67,17 @@ public class OAuth2ContextFactoryTest { @Rule public DbTester dbTester = DbTester.create(System2.INSTANCE); + @Rule + public LogTester logTester = new LogTester(); + private DbClient dbClient = dbTester.getDbClient(); private DbSession dbSession = dbTester.getSession(); - private ThreadLocalUserSession threadLocalUserSession = mock(ThreadLocalUserSession.class); private UserIdentityAuthenticator userIdentityAuthenticator = mock(UserIdentityAuthenticator.class); private Server server = mock(Server.class); private OAuthCsrfVerifier csrfVerifier = mock(OAuthCsrfVerifier.class); private JwtHttpHandler jwtHttpHandler = mock(JwtHttpHandler.class); private TestUserSessionFactory userSessionFactory = TestUserSessionFactory.standalone(); - private HttpServletRequest request = mock(HttpServletRequest.class); private HttpServletResponse response = mock(HttpServletResponse.class); private HttpSession session = mock(HttpSession.class); @@ -125,14 +126,13 @@ public class OAuth2ContextFactoryTest { } @Test - public void fail_to_get_callback_url_on_not_secured_server() throws Exception { - when(server.getPublicRootUrl()).thenReturn(NOT_SECURED_PUBLIC_URL); + public void display_a_warning_if_not_https() throws Exception { + when(server.getPublicRootUrl()).thenReturn("http://mydomain.com"); OAuth2IdentityProvider.InitContext context = newInitContext(); - thrown.expect(MessageException.class); - thrown.expectMessage("The server url should be configured in https, please update the property 'sonar.core.serverBaseURL'"); - context.getCallbackUrl(); + assertThat(context.getCallbackUrl()).isEqualTo("http://mydomain.com/oauth2/callback/github"); + assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly("For security reasons, the server URL used for OAuth authentications should be https. Please update the property 'sonar.core.serverBaseURL'."); } @Test diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ServerImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ServerImplTest.java index 55c66fd3a53..ae164982d5b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ServerImplTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/ServerImplTest.java @@ -46,16 +46,20 @@ public class ServerImplTest { public TemporaryFolder temp = new TemporaryFolder(); @Test + public void isDev_always_returns_false() { + assertThat(underTest.isDev()).isFalse(); + } + + @Test public void test_url_information() { when(urlSettings.getContextPath()).thenReturn("/foo"); when(urlSettings.getBaseUrl()).thenReturn("http://localhost:9000/foo"); - when(urlSettings.isDev()).thenReturn(true); when(urlSettings.isSecured()).thenReturn(false); assertThat(underTest.getContextPath()).isEqualTo("/foo"); assertThat(underTest.getURL()).isEqualTo("http://localhost:9000/foo"); assertThat(underTest.getPublicRootUrl()).isEqualTo("http://localhost:9000/foo"); - assertThat(underTest.isDev()).isTrue(); + assertThat(underTest.isDev()).isFalse(); assertThat(underTest.isSecured()).isFalse(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ServerTesterPlatform.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ServerTesterPlatform.java deleted file mode 100644 index ca2a3f4324e..00000000000 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ServerTesterPlatform.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2017 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.platform; - -import java.util.function.Supplier; - -public class ServerTesterPlatform extends Platform { - public ServerTesterPlatform(Supplier<AutoStarter> autoStarterFactory) { - super(autoStarterFactory); - } - - /** - * Override to make public - */ - @Override - public void doStart(Startup startup) { - super.doStart(startup); - } - - /** - * Override to make public - */ - @Override - public void restart(Startup startup) { - super.restart(startup); - } -} diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/UrlSettingsTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/UrlSettingsTest.java index 4e76ae97040..8e3126e1c9b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/UrlSettingsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/UrlSettingsTest.java @@ -46,18 +46,6 @@ public class UrlSettingsTest { } @Test - public void dev_mode_is_disabled_by_default() { - assertThat(underTest().isDev()).isFalse(); - } - - @Test - public void dev_mode_is_enabled() { - settings.setProperty("sonar.web.dev", true); - - assertThat(underTest().isDev()).isTrue(); - } - - @Test public void default_url() throws Exception { assertThat(underTest().getBaseUrl()).isEqualTo("http://localhost:9000"); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/RestartActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/RestartActionTest.java index 059e2e0e064..4403c0ad593 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/RestartActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/RestartActionTest.java @@ -24,20 +24,16 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.InOrder; import org.mockito.Mockito; -import org.sonar.api.config.internal.MapSettings; import org.sonar.api.utils.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.server.app.ProcessCommandWrapper; import org.sonar.server.app.RestartFlagHolder; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.platform.Platform; import org.sonar.server.platform.WebServer; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsActionTester; -import org.sonar.server.ws.WsTester; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -49,53 +45,15 @@ public class RestartActionTest { @Rule public LogTester logTester = new LogTester(); - private MapSettings settings = new MapSettings(); - private Platform platform = mock(Platform.class); private ProcessCommandWrapper processCommandWrapper = mock(ProcessCommandWrapper.class); private RestartFlagHolder restartFlagHolder = mock(RestartFlagHolder.class); private WebServer webServer = mock(WebServer.class); - private RestartAction sut = new RestartAction(userSessionRule, settings.asConfig(), platform, processCommandWrapper, restartFlagHolder, webServer); - private InOrder inOrder = Mockito.inOrder(platform, restartFlagHolder, processCommandWrapper); + private RestartAction sut = new RestartAction(userSessionRule, processCommandWrapper, restartFlagHolder, webServer); + private InOrder inOrder = Mockito.inOrder(restartFlagHolder, processCommandWrapper); private WsActionTester actionTester = new WsActionTester(sut); @Test - public void restart_if_dev_mode() throws Exception { - when(webServer.isStandalone()).thenReturn(true); - settings.setProperty("sonar.web.dev", true); - - SystemWs ws = new SystemWs(sut); - - WsTester tester = new WsTester(ws); - tester.newPostRequest("api/system", "restart").execute(); - InOrder inOrder = Mockito.inOrder(platform, restartFlagHolder); - inOrder.verify(restartFlagHolder).set(); - inOrder.verify(platform).restart(); - inOrder.verify(restartFlagHolder).unset(); - } - - @Test - public void restart_flag_is_unset_in_dev_mode_even_if_restart_fails() throws Exception { - when(webServer.isStandalone()).thenReturn(true); - settings.setProperty("sonar.web.dev", true); - RuntimeException toBeThrown = new RuntimeException("simulating platform.restart() failed"); - doThrow(toBeThrown).when(platform).restart(); - - SystemWs ws = new SystemWs(sut); - - WsTester tester = new WsTester(ws); - try { - tester.newPostRequest("api/system", "restart").execute(); - } catch (RuntimeException e) { - assertThat(e).isSameAs(toBeThrown); - } finally { - inOrder.verify(restartFlagHolder).set(); - inOrder.verify(platform).restart(); - inOrder.verify(restartFlagHolder).unset(); - } - } - - @Test public void request_fails_in_production_mode_with_ForbiddenException_when_user_is_not_logged_in() { when(webServer.isStandalone()).thenReturn(true); expectedException.expect(ForbiddenException.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/SystemWsTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/SystemWsTest.java index 22e6ad20114..441c239822f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/SystemWsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/SystemWsTest.java @@ -20,7 +20,6 @@ package org.sonar.server.platform.ws; import org.junit.Test; -import org.sonar.api.config.Configuration; import org.sonar.api.server.ws.WebService; import org.sonar.ce.http.CeHttpClient; import org.sonar.ce.http.CeHttpClientImpl; @@ -28,7 +27,6 @@ import org.sonar.server.app.ProcessCommandWrapper; import org.sonar.server.app.RestartFlagHolder; import org.sonar.server.health.HealthChecker; import org.sonar.server.health.TestStandaloneHealthChecker; -import org.sonar.server.platform.Platform; import org.sonar.server.platform.WebServer; import org.sonar.server.telemetry.TelemetryDataLoader; import org.sonar.server.tester.AnonymousMockUserSession; @@ -44,7 +42,7 @@ public class SystemWsTest { @Test public void define() { - RestartAction action1 = new RestartAction(mock(UserSession.class), mock(Configuration.class), mock(Platform.class), mock(ProcessCommandWrapper.class), + RestartAction action1 = new RestartAction(mock(UserSession.class), mock(ProcessCommandWrapper.class), mock(RestartFlagHolder.class), mock(WebServer.class)); InfoAction action2 = new InfoAction(new AnonymousMockUserSession(), mock(TelemetryDataLoader.class), ceHttpClient, healthChecker); SystemWs ws = new SystemWs(action1, action2); |