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;
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;
this.dbClient = dbClient;
this.organizationFlags = organizationFlags;
this.defaultOrganizationProvider = defaultOrganizationProvider;
+ this.branchFeature = branchFeature;
this.userSession = userSession;
}
writeVersion(json);
writeDatabaseProduction(json);
writeOrganizationSupport(json);
+ writeBranchSupport(json);
json.endObject();
}
}
json.prop("defaultOrganization", defaultOrganizationProvider.get().getKey());
}
}
+
+ private void writeBranchSupport(JsonWriter json) {
+ json.prop("branchesEnabled", branchFeature.isEnabled());
+ }
}
"version": "6.2",
"productionDatabase": true,
"organizationsEnabled": false,
+ "branchesEnabled": false,
"defaultOrganization": "key_foo",
"canAdmin": false
}
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;
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 {
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();
}});
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) {
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;
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;
.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);
+ }
}