From 9029b3d5287400d036c5102dbf865d3789f3b728 Mon Sep 17 00:00:00 2001 From: Matteo Mara Date: Fri, 28 Oct 2022 16:43:39 +0200 Subject: [PATCH] SONAR-17515 allow the LoginMessageFeature enabled status to be checked on CE and DE editions --- .../loginmessage/LoginMessageFeature.java | 48 ++++++++++++++ .../server/loginmessage/package-info.java | 20 ++++++ .../loginmessage/LoginMessageFeatureTest.java | 65 +++++++++++++++++++ .../platformlevel/PlatformLevel4.java | 3 + 4 files changed, 136 insertions(+) create mode 100644 server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/LoginMessageFeature.java create mode 100644 server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/package-info.java create mode 100644 server/sonar-server-common/src/test/java/org/sonar/server/loginmessage/LoginMessageFeatureTest.java diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/LoginMessageFeature.java b/server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/LoginMessageFeature.java new file mode 100644 index 00000000000..7c3ead4858d --- /dev/null +++ b/server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/LoginMessageFeature.java @@ -0,0 +1,48 @@ +/* + * SonarQube + * Copyright (C) 2009-2022 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.loginmessage; + +import org.sonar.api.SonarRuntime; +import org.sonar.api.server.ServerSide; +import org.sonar.server.feature.SonarQubeFeature; + +import static org.sonar.api.SonarEdition.DATACENTER; +import static org.sonar.api.SonarEdition.ENTERPRISE; + +@ServerSide +public class LoginMessageFeature implements SonarQubeFeature { + + private final SonarRuntime sonarRuntime; + + public LoginMessageFeature(SonarRuntime sonarRuntime) { + this.sonarRuntime = sonarRuntime; + } + + @Override + public String getName() { + return "login-message"; + } + + @Override + public boolean isEnabled() { + return sonarRuntime.getEdition() == ENTERPRISE || sonarRuntime.getEdition() == DATACENTER; + } + +} diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/package-info.java b/server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/package-info.java new file mode 100644 index 00000000000..2c10a44cfa5 --- /dev/null +++ b/server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/package-info.java @@ -0,0 +1,20 @@ +/* + * SonarQube + * Copyright (C) 2009-2022 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.loginmessage; diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/loginmessage/LoginMessageFeatureTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/loginmessage/LoginMessageFeatureTest.java new file mode 100644 index 00000000000..6000c7f7199 --- /dev/null +++ b/server/sonar-server-common/src/test/java/org/sonar/server/loginmessage/LoginMessageFeatureTest.java @@ -0,0 +1,65 @@ +/* + * SonarQube + * Copyright (C) 2009-2022 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.loginmessage; + +import com.tngtech.java.junit.dataprovider.DataProvider; +import com.tngtech.java.junit.dataprovider.DataProviderRunner; +import com.tngtech.java.junit.dataprovider.UseDataProvider; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.sonar.api.SonarEdition; +import org.sonar.api.SonarRuntime; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@RunWith(DataProviderRunner.class) +public class LoginMessageFeatureTest { + + private final SonarRuntime sonarRuntime = mock(SonarRuntime.class); + private final LoginMessageFeature underTest = new LoginMessageFeature(sonarRuntime); + + @Test + @UseDataProvider("editionsAndLoginMessageFeatureAvailability") + public void isEnabled_shouldOnlyBeEnabledInEnterpriseEditionPlus(SonarEdition edition, boolean shouldBeEnabled) { + when(sonarRuntime.getEdition()).thenReturn(edition); + + boolean isEnabled = underTest.isEnabled(); + + assertThat(isEnabled).isEqualTo(shouldBeEnabled); + } + + @Test + public void getName_ShouldReturn_RegulatoryReports() { + assertEquals("login-message", underTest.getName()); + } + + @DataProvider + public static Object[][] editionsAndLoginMessageFeatureAvailability() { + return new Object[][] { + {SonarEdition.COMMUNITY, false}, + {SonarEdition.DEVELOPER, false}, + {SonarEdition.ENTERPRISE, true}, + {SonarEdition.DATACENTER, true} + }; + } +} diff --git a/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java b/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java index f7057896da9..d30627adf7d 100644 --- a/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java +++ b/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java @@ -121,6 +121,7 @@ import org.sonar.server.issue.ws.IssueWsModule; import org.sonar.server.language.LanguageValidation; import org.sonar.server.language.ws.LanguageWs; import org.sonar.server.log.ServerLogging; +import org.sonar.server.loginmessage.LoginMessageFeature; import org.sonar.server.measure.index.ProjectsEsModule; import org.sonar.server.measure.live.LiveMeasureModule; import org.sonar.server.measure.ws.MeasuresWsModule; @@ -565,6 +566,8 @@ public class PlatformLevel4 extends PlatformLevel { MultipleAlmFeature.class, + LoginMessageFeature.class, + // ServerPush endpoints new ServerPushModule(), -- 2.39.5