]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-17515 allow the LoginMessageFeature enabled status to be checked on CE and...
authorMatteo Mara <matteo.mara@sonarsource.com>
Fri, 28 Oct 2022 14:43:39 +0000 (16:43 +0200)
committersonartech <sonartech@sonarsource.com>
Sat, 29 Oct 2022 20:03:23 +0000 (20:03 +0000)
server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/LoginMessageFeature.java [new file with mode: 0644]
server/sonar-server-common/src/main/java/org/sonar/server/loginmessage/package-info.java [new file with mode: 0644]
server/sonar-server-common/src/test/java/org/sonar/server/loginmessage/LoginMessageFeatureTest.java [new file with mode: 0644]
server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.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 (file)
index 0000000..7c3ead4
--- /dev/null
@@ -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 (file)
index 0000000..2c10a44
--- /dev/null
@@ -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 (file)
index 0000000..6000c7f
--- /dev/null
@@ -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}
+    };
+  }
+}
index f7057896da95b19c606cf8f925d0316f76809f10..d30627adf7d237d7c01d6fc05a3bb162ff894f21 100644 (file)
@@ -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(),