import com.google.common.collect.ImmutableSet;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.sonar.api.Startable;
import org.sonar.api.server.ws.WebService.NewController;
import org.sonar.api.utils.text.JsonWriter;
import org.sonar.api.web.page.Page;
+import org.sonar.core.platform.EditionProvider;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.dialect.H2;
private final DefaultOrganizationProvider defaultOrganizationProvider;
private final BranchFeatureProxy branchFeature;
private final UserSession userSession;
+ private final EditionProvider editionProvider;
public GlobalAction(PageRepository pageRepository, Configuration config, ResourceTypes resourceTypes, Server server,
WebServer webServer, DbClient dbClient, OrganizationFlags organizationFlags,
- DefaultOrganizationProvider defaultOrganizationProvider, BranchFeatureProxy branchFeature, UserSession userSession) {
+ DefaultOrganizationProvider defaultOrganizationProvider, BranchFeatureProxy branchFeature, UserSession userSession, EditionProvider editionProvider) {
this.pageRepository = pageRepository;
this.config = config;
this.resourceTypes = resourceTypes;
this.defaultOrganizationProvider = defaultOrganizationProvider;
this.branchFeature = branchFeature;
this.userSession = userSession;
+ this.editionProvider = editionProvider;
this.systemSettingValuesByKey = new HashMap<>();
}
writeDatabaseProduction(json);
writeOrganizationSupport(json);
writeBranchSupport(json);
+ editionProvider.get().ifPresent(e -> json.prop("edition", e.name().toLowerCase(Locale.ENGLISH)));
json.prop("standalone", webServer.isStandalone());
json.endObject();
}
*/
package org.sonar.server.ui.ws;
+import java.util.Optional;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.web.page.Page;
import org.sonar.api.web.page.PageDefinition;
+import org.sonar.core.extension.CoreExtensionRepository;
+import org.sonar.core.platform.EditionProvider;
import org.sonar.core.platform.PluginInfo;
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.core.extension.CoreExtensionRepository;
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 WebServer webServer = mock(WebServer.class);
private DbClient dbClient = mock(DbClient.class, RETURNS_DEEP_STUBS);
-
private TestOrganizationFlags organizationFlags = TestOrganizationFlags.standalone();
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.fromUuid("foo");
private BranchFeatureRule branchFeature = new BranchFeatureRule();
+ private EditionProvider editionProvider = mock(EditionProvider.class);
private WsActionTester ws;
when(server.getVersion()).thenReturn("6.2");
when(dbClient.getDatabase().getDialect()).thenReturn(new MySql());
when(webServer.isStandalone()).thenReturn(true);
+ when(editionProvider.get()).thenReturn(Optional.of(EditionProvider.Edition.COMMUNITY));
String result = call();
assertJson(result).isSimilarTo(ws.getDef().responseExampleAsString());
}
+ @Test
+ public void edition_is_not_returned_if_not_defined() {
+ init();
+ when(editionProvider.get()).thenReturn(Optional.empty());
+
+ String json = call();
+ assertThat(json).doesNotContain("edition");
+ }
+
+ @Test
+ public void edition_is_returned_if_defined() {
+ init();
+ when(editionProvider.get()).thenReturn(Optional.of(EditionProvider.Edition.DEVELOPER));
+
+ String json = call();
+ assertJson(json).isSimilarTo("{\"edition\":\"developer\"}");
+ }
+
private void init() {
init(new org.sonar.api.web.page.Page[] {}, new ResourceTypeTree[] {});
}
}});
pageRepository.start();
GlobalAction wsAction = new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server,
- webServer, dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession);
+ webServer, dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession, editionProvider);
ws = new WsActionTester(wsAction);
wsAction.start();
}