diff options
4 files changed, 37 insertions, 3 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java index cc3372f1bf5..5364af20f59 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java @@ -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()); + } } diff --git a/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json b/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json index cddaab6ff31..5deb92e4e4c 100644 --- a/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json +++ b/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json @@ -26,6 +26,7 @@ "version": "6.2", "productionDatabase": true, "organizationsEnabled": false, + "branchesEnabled": false, "defaultOrganization": "key_foo", "canAdmin": false } diff --git a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java index edf14a5253d..562417f1969 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java @@ -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 { @@ -162,6 +165,16 @@ public class GlobalActionTest { } @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(); userSession.logIn().setRoot(); @@ -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) { diff --git a/tests/src/test/java/org/sonarqube/tests/branch/BranchTest.java b/tests/src/test/java/org/sonarqube/tests/branch/BranchTest.java index 3be6b17d4c3..18b7808b770 100644 --- a/tests/src/test/java/org/sonarqube/tests/branch/BranchTest.java +++ b/tests/src/test/java/org/sonarqube/tests/branch/BranchTest.java @@ -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); + } } |