aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java10
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json1
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java17
-rw-r--r--tests/src/test/java/org/sonarqube/tests/branch/BranchTest.java12
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);
+ }
}