diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2018-02-13 16:13:00 +0100 |
---|---|---|
committer | Stas Vilchik <stas.vilchik@sonarsource.com> | 2018-03-02 13:17:32 +0100 |
commit | a6e5fdbdaabb92324857dd5c452d8f9b4ffff85b (patch) | |
tree | f7d6d15f051c875150618c1a4c12fb12d6e060ea /tests | |
parent | c0e0cb5d89ba647c37d38c9c68f61b8c9fd32499 (diff) | |
download | sonarqube-a6e5fdbdaabb92324857dd5c452d8f9b4ffff85b.tar.gz sonarqube-a6e5fdbdaabb92324857dd5c452d8f9b4ffff85b.zip |
SONAR-10423 Replace "parameter" by "component" and "organization" in api/users WS
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/user/SonarCloudHomepageTest.java | 117 | ||||
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java | 1 |
2 files changed, 118 insertions, 0 deletions
diff --git a/tests/src/test/java/org/sonarqube/tests/user/SonarCloudHomepageTest.java b/tests/src/test/java/org/sonarqube/tests/user/SonarCloudHomepageTest.java new file mode 100644 index 00000000000..140999bf6b9 --- /dev/null +++ b/tests/src/test/java/org/sonarqube/tests/user/SonarCloudHomepageTest.java @@ -0,0 +1,117 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonarqube.tests.user; + +import com.sonar.orchestrator.Orchestrator; +import javax.annotation.Nullable; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import org.sonarqube.qa.util.Tester; +import org.sonarqube.ws.Organizations.Organization; +import org.sonarqube.ws.Projects.CreateWsResponse.Project; +import org.sonarqube.ws.Users; +import org.sonarqube.ws.Users.CreateWsResponse.User; +import org.sonarqube.ws.Users.CurrentWsResponse.HomepageType; +import org.sonarqube.ws.client.PostRequest; +import org.sonarqube.ws.client.projects.DeleteRequest; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.sonarqube.ws.Users.CurrentWsResponse.HomepageType.MY_ISSUES; +import static org.sonarqube.ws.Users.CurrentWsResponse.HomepageType.MY_PROJECTS; +import static org.sonarqube.ws.Users.CurrentWsResponse.HomepageType.ORGANIZATION; +import static org.sonarqube.ws.Users.CurrentWsResponse.HomepageType.PROJECT; + +public class SonarCloudHomepageTest { + + @ClassRule + public static final Orchestrator orchestrator = SonarCloudUserSuite.ORCHESTRATOR; + + @Rule + public Tester tester = new Tester(orchestrator); + + @Test + public void default_homepage() { + Organization organization = tester.organizations().generate(); + User user = tester.users().generateMember(organization); + + checkHomepage(user, MY_PROJECTS, null, null); + } + + @Test + public void set_and_get_homepage() { + Organization organization = tester.organizations().generate(); + User user = tester.users().generateMember(organization); + + setHomepage(user, "MY_ISSUES", null, null); + + checkHomepage(user, MY_ISSUES, null, null); + } + + @Test + public void fallback_to_my_projects_when_homepage_was_set_to_a_removed_project() { + Organization organization = tester.organizations().generate(); + User user = tester.users().generateMember(organization); + Project project = tester.projects().provision(organization); + setHomepage(user, "PROJECT", null, project.getKey()); + checkHomepage(user, PROJECT, null, project); + + tester.wsClient().projects().delete(new DeleteRequest().setProject(project.getKey())); + + checkHomepage(user, MY_PROJECTS, null, null); + } + + @Test + public void fallback_to_my_projects_when_homepage_was_set_to_a_removed_organization() { + Organization organization = tester.organizations().generate(); + User user = tester.users().generateMember(organization); + setHomepage(user, "ORGANIZATION", organization.getKey(), null); + checkHomepage(user, ORGANIZATION, organization, null); + + tester.wsClient().organizations().delete(new org.sonarqube.ws.client.organizations.DeleteRequest().setOrganization(organization.getKey())); + + checkHomepage(user, MY_PROJECTS, null, null); + } + + private void setHomepage(User user, String type, @Nullable String organization, @Nullable String component) { + // Do not call the java user client as it's only generated for SonarQube, not for SonarCloud + tester.as(user.getLogin()).wsClient().wsConnector().call(new PostRequest("api/users/set_homepage") + .setParam("type", type) + .setParam("organization", organization) + .setParam("component", component)) + .failIfNotSuccessful(); + } + + private void checkHomepage(User user, HomepageType type, @Nullable Organization organization, @Nullable Project project) { + Users.CurrentWsResponse current = tester.as(user.getLogin()).wsClient().users().current(); + assertThat(current.getHomepage().getType()).isEqualTo(type); + if (organization != null) { + assertThat(current.getHomepage().getOrganization()).isEqualTo(organization.getKey()); + } else { + assertThat(current.getHomepage().hasOrganization()).isFalse(); + } + if (project != null) { + assertThat(current.getHomepage().getComponent()).isEqualTo(project.getKey()); + } else { + assertThat(current.getHomepage().hasComponent()).isFalse(); + } + } +} diff --git a/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java b/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java index b14ad6da627..afc1db96145 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java @@ -29,6 +29,7 @@ import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @Suite.SuiteClasses({ + SonarCloudHomepageTest.class, SonarCloudNotificationsWsTest.class }) public class SonarCloudUserSuite { |