*/
public Navigation openBrowser() {
verifyStarted();
- return Navigation.create(orchestrator);
- }
-
- public Navigation openBrowser(String path) {
- verifyStarted();
- return Navigation.create(orchestrator, path);
+ // /projects is used as on SonarCloud instance, the "/" is redirected to SonarCloud website
+ return Navigation.create(orchestrator, "/projects");
}
private void verifyNotStarted() {
*/
package org.sonar.server.organization.ws;
+import org.sonar.api.config.Configuration;
import org.sonar.core.platform.Module;
+import static org.sonar.process.ProcessProperties.Property.SONARCLOUD_ENABLED;
+
public class OrganizationsWsModule extends Module {
+ private final Configuration config;
+
+ public OrganizationsWsModule(Configuration config) {
+ this.config = config;
+ }
+
@Override
protected void configureModule() {
add(
OrganizationsWs.class,
OrganizationsWsSupport.class,
// actions
- AddMemberAction.class,
- CreateAction.class,
- DeleteAction.class,
- EnableSupportAction.class,
- RemoveMemberAction.class,
SearchAction.class,
- SearchMembersAction.class,
- UpdateAction.class,
- UpdateProjectVisibilityAction.class);
+ SearchMembersAction.class);
+ if (config.getBoolean(SONARCLOUD_ENABLED.getKey()).orElse(false)) {
+ add(
+ EnableSupportAction.class,
+ AddMemberAction.class,
+ CreateAction.class,
+ DeleteAction.class,
+ RemoveMemberAction.class,
+ UpdateAction.class,
+ UpdateProjectVisibilityAction.class);
+ }
}
}
package org.sonar.server.organization.ws;
import org.junit.Test;
+import org.sonar.api.config.internal.MapSettings;
import org.sonar.core.platform.ComponentContainer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.core.platform.ComponentContainer.COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER;
public class OrganizationsWsModuleTest {
- private OrganizationsWsModule underTest = new OrganizationsWsModule();
+
+ private ComponentContainer container = new ComponentContainer();
+ private MapSettings mapSettings = new MapSettings();
+ private OrganizationsWsModule underTest = new OrganizationsWsModule(mapSettings.asConfig());
+
+ @Test
+ public void verify_component_count_when_not_on_sonar_cloud() {
+ mapSettings.setProperty("sonar.sonarcloud.enabled", false);
+
+ underTest.configure(container);
+
+ assertThat(container.getPicoContainer().getComponentAdapters())
+ .hasSize(COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER + 4);
+ }
@Test
- public void verify_component_count() {
- ComponentContainer container = new ComponentContainer();
+ public void verify_component_count_when_on_sonar_cloud() {
+ mapSettings.setProperty("sonar.sonarcloud.enabled", true);
+
underTest.configure(container);
+
assertThat(container.getPicoContainer().getComponentAdapters())
.hasSize(COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER + 11);
}
.addPlugin(pluginArtifact("base-auth-plugin"))
.addPlugin(pluginArtifact("ui-extensions-plugin"))
+ .setServerProperty("sonar.sonarcloud.enabled", "true")
+
.build();
}
.getOrchestratorBuilder()
.addPlugin(ItUtils.xooPlugin())
.setServerProperty("sonar.search.httpPort", "" + esHttpPort)
+ .setServerProperty("sonar.sonarcloud.enabled", "true")
.build();
}
@Test
public void public_project_badges() {
orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")));
- tester.openBrowser("/projects").openProjectDashboard(PROJECT_KEY);
+ tester.openBrowser().openProjectDashboard(PROJECT_KEY);
SelenideElement badgesModal = openBadgesModal();
ElementsCollection badgeButtons = badgesModal.$$(".badge-button").shouldHaveSize(2);
.setProperties("sonar.organization", org.getKey(), "sonar.login", user.getLogin(), "sonar.password", user.getLogin())
);
tester.wsClient().projects().updateVisibility(new UpdateVisibilityRequest().setProject("sample").setVisibility("private"));
- tester.openBrowser("/projects").logIn().submitCredentials(user.getLogin()).openProjectDashboard(PROJECT_KEY);
+ tester.openBrowser().logIn().submitCredentials(user.getLogin()).openProjectDashboard(PROJECT_KEY);
shouldNotHaveBadges();
}
@Test
public void public_project_badges() {
orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")));
- tester.openBrowser("/projects").openProjectDashboard(PROJECT_KEY);
+ tester.openBrowser().openProjectDashboard(PROJECT_KEY);
SelenideElement badgesModal = openBadgesModal();
ElementsCollection badgeButtons = badgesModal.$$(".badge-button").shouldHaveSize(3);
.setProperties("sonar.organization", org.getKey(), "sonar.login", user.getLogin(), "sonar.password", user.getLogin())
);
tester.wsClient().projects().updateVisibility(new UpdateVisibilityRequest().setProject("sample").setVisibility("private"));
- tester.openBrowser("/projects").logIn().submitCredentials(user.getLogin()).openProjectDashboard(PROJECT_KEY);
+ tester.openBrowser().logIn().submitCredentials(user.getLogin()).openProjectDashboard(PROJECT_KEY);
shouldNotHaveBadges();
}
import org.junit.rules.DisableOnDebug;
import org.junit.rules.TestRule;
import org.junit.rules.Timeout;
-import org.sonarqube.tests.Byteman;
import org.sonarqube.qa.util.Tester;
+import org.sonarqube.tests.Byteman;
import org.sonarqube.ws.Organizations;
import org.sonarqube.ws.Qualityprofiles;
import org.sonarqube.ws.client.rules.SearchRequest;
.getOrchestratorBuilder()
.setServerProperty("sonar.search.recovery.delayInMs", "1000")
.setServerProperty("sonar.search.recovery.minAgeInMs", "3000")
+ .setServerProperty("sonar.sonarcloud.enabled", "true")
.addPlugin(ItUtils.xooPlugin())
.build();
}
"/organization/OrganizationQualityProfilesUiTest/should_display_profile_inheritance.html",
"/organization/OrganizationQualityProfilesUiTest/should_display_profile_exporters.html");
- tester.openBrowser().openHome().logIn().submitCredentials(user.getLogin())
+ tester.openBrowser().logIn().submitCredentials(user.getLogin())
.openQualityProfile("xoo", "sample", organization.getKey())
.shouldHaveAssociatedProject("Sample")
.shouldAllowToChangeProjects();