]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-9616 api/navigation/global returns branchesEnabled
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 24 Aug 2017 10:33:37 +0000 (12:33 +0200)
committerJanos Gyerik <janos.gyerik@sonarsource.com>
Tue, 12 Sep 2017 09:34:50 +0000 (11:34 +0200)
server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java
server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json
server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java
tests/src/test/java/org/sonarqube/tests/branch/BranchTest.java

index cc3372f1bf58f65b09e08a77531344ae3eb2e748..5364af20f5948c41c036645bcc23a935b91639c7 100644 (file)
@@ -32,6 +32,7 @@ import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.dialect.H2;
+import org.sonar.server.branch.BranchFeatureProxy;
 import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.organization.OrganizationFlags;
 import org.sonar.server.ui.PageRepository;
@@ -64,10 +65,11 @@ public class GlobalAction implements NavigationWsAction {
   private final DbClient dbClient;
   private final OrganizationFlags organizationFlags;
   private final DefaultOrganizationProvider defaultOrganizationProvider;
+  private final BranchFeatureProxy branchFeature;
   private final UserSession userSession;
 
   public GlobalAction(PageRepository pageRepository, Configuration config, ResourceTypes resourceTypes, Server server,
-    DbClient dbClient, OrganizationFlags organizationFlags, DefaultOrganizationProvider defaultOrganizationProvider, UserSession userSession) {
+    DbClient dbClient, OrganizationFlags organizationFlags, DefaultOrganizationProvider defaultOrganizationProvider, BranchFeatureProxy branchFeature, UserSession userSession) {
     this.pageRepository = pageRepository;
     this.config = config;
     this.resourceTypes = resourceTypes;
@@ -75,6 +77,7 @@ public class GlobalAction implements NavigationWsAction {
     this.dbClient = dbClient;
     this.organizationFlags = organizationFlags;
     this.defaultOrganizationProvider = defaultOrganizationProvider;
+    this.branchFeature = branchFeature;
     this.userSession = userSession;
   }
 
@@ -100,6 +103,7 @@ public class GlobalAction implements NavigationWsAction {
       writeVersion(json);
       writeDatabaseProduction(json);
       writeOrganizationSupport(json);
+      writeBranchSupport(json);
       json.endObject();
     }
   }
@@ -155,4 +159,8 @@ public class GlobalAction implements NavigationWsAction {
       json.prop("defaultOrganization", defaultOrganizationProvider.get().getKey());
     }
   }
+
+  private void writeBranchSupport(JsonWriter json) {
+    json.prop("branchesEnabled", branchFeature.isEnabled());
+  }
 }
index cddaab6ff311f4f3913cc9bbee626a7f318fc998..5deb92e4e4c8fe41e03d68c3f01f6133db323a51 100644 (file)
@@ -26,6 +26,7 @@
   "version": "6.2",
   "productionDatabase": true,
   "organizationsEnabled": false,
+  "branchesEnabled": false,
   "defaultOrganization": "key_foo",
   "canAdmin": false
 }
index edf14a5253ded68190bd74ec653d7ab2b5b5d268..562417f1969754e909bb692002e024686ed1798e 100644 (file)
@@ -32,6 +32,7 @@ import org.sonar.core.platform.PluginRepository;
 import org.sonar.db.DbClient;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MySql;
+import org.sonar.server.branch.BranchFeatureRule;
 import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.organization.TestOrganizationFlags;
@@ -56,9 +57,11 @@ public class GlobalActionTest {
   private Server server = mock(Server.class);
   private DbClient dbClient = mock(DbClient.class, RETURNS_DEEP_STUBS);
 
-  private WsActionTester ws;
   private TestOrganizationFlags organizationFlags = TestOrganizationFlags.standalone();
   private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.fromUuid("foo");
+  private BranchFeatureRule branchFeature = new BranchFeatureRule();
+
+  private WsActionTester ws;
 
   @Test
   public void empty_call() throws Exception {
@@ -161,6 +164,16 @@ public class GlobalActionTest {
     executeAndVerify("organization_support.json");
   }
 
+  @Test
+  public void branch_support() throws Exception {
+    init();
+    branchFeature.setEnabled(true);
+    assertJson(call()).isSimilarTo("{\"branchesEnabled\":true}");
+
+    branchFeature.setEnabled(false);
+    assertJson(call()).isSimilarTo("{\"branchesEnabled\":false}");
+  }
+
   @Test
   public void can_admin_on_global_level() {
     init();
@@ -212,7 +225,7 @@ public class GlobalActionTest {
     }});
     pageRepository.start();
     ws = new WsActionTester(new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server,
-      dbClient, organizationFlags, defaultOrganizationProvider, userSession));
+      dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession));
   }
 
   private void executeAndVerify(String json) {
index 3be6b17d4c3b09032e7b846d5c700875aea4701c..18b7808b7704d47f10dec05cb0ac1a0bbf1356bd 100644 (file)
@@ -21,6 +21,7 @@
 package org.sonarqube.tests.branch;
 
 import com.sonar.orchestrator.Orchestrator;
+import java.util.Map;
 import org.assertj.core.groups.Tuple;
 import org.junit.ClassRule;
 import org.junit.Rule;
@@ -29,6 +30,9 @@ import org.sonarqube.tests.Category1Suite;
 import org.sonarqube.tests.Tester;
 import org.sonarqube.ws.Common;
 import org.sonarqube.ws.WsBranches;
+import org.sonarqube.ws.client.GetRequest;
+import org.sonarqube.ws.client.WsResponse;
+import util.ItUtils;
 
 import static org.assertj.core.api.Java6Assertions.assertThat;
 import static util.ItUtils.runProjectAnalysis;
@@ -51,4 +55,12 @@ public class BranchTest {
       .extracting(WsBranches.Branch::getName, WsBranches.Branch::getType, WsBranches.Branch::getIsMain)
       .containsExactlyInAnyOrder(Tuple.tuple("master", Common.BranchType.LONG, true));
   }
+
+  @Test
+  public void navigation_global_return_branches_support_to_false() {
+    WsResponse status =tester.wsClient().wsConnector().call(new GetRequest("api/navigation/global"));
+    Map<String, Object> statusMap = ItUtils.jsonToMap(status.content());
+
+    assertThat(statusMap.get("branchesEnabled")).isEqualTo(false);
+  }
 }