diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2018-02-15 10:33:33 +0100 |
---|---|---|
committer | Stas Vilchik <stas.vilchik@sonarsource.com> | 2018-03-02 13:17:32 +0100 |
commit | b035b76e5e7f6a537c00681450f4f7a5605a1026 (patch) | |
tree | 417e3c2c6c7876e09c170a6b19b137128197ea60 /tests | |
parent | dfbb661fe6369a5e93da1dc04c4f5947b625dcd8 (diff) | |
download | sonarqube-b035b76e5e7f6a537c00681450f4f7a5605a1026.tar.gz sonarqube-b035b76e5e7f6a537c00681450f4f7a5605a1026.zip |
SONAR-10423 Allow homepage feature on SonarQube
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/user/HomepageTest.java | 93 | ||||
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/user/UserSuite.java | 1 |
2 files changed, 94 insertions, 0 deletions
diff --git a/tests/src/test/java/org/sonarqube/tests/user/HomepageTest.java b/tests/src/test/java/org/sonarqube/tests/user/HomepageTest.java new file mode 100644 index 00000000000..884ac565884 --- /dev/null +++ b/tests/src/test/java/org/sonarqube/tests/user/HomepageTest.java @@ -0,0 +1,93 @@ +/* + * 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.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.PROJECT; +import static org.sonarqube.ws.Users.CurrentWsResponse.HomepageType.PROJECTS; + +public class HomepageTest { + + @ClassRule + public static final Orchestrator orchestrator = UserSuite.ORCHESTRATOR; + + @Rule + public Tester tester = new Tester(orchestrator).disableOrganizations(); + + @Test + public void default_homepage() { + User user = tester.users().generate(); + + checkHomepage(user, PROJECTS, null); + } + + @Test + public void set_and_get_homepage() { + Project project = tester.projects().provision(); + User user = tester.users().generate(); + + setHomepage(user, "PROJECT", project.getKey()); + + checkHomepage(user, PROJECT, project); + } + + @Test + public void fallback_to_projects_when_homepage_was_set_to_a_removed_project() { + User user = tester.users().generate(); + Project project = tester.projects().provision(); + setHomepage(user, "PROJECT", project.getKey()); + checkHomepage(user, PROJECT, project); + + tester.wsClient().projects().delete(new DeleteRequest().setProject(project.getKey())); + + checkHomepage(user, PROJECTS, null); + } + + private void setHomepage(User user, String type, @Nullable String component) { + tester.as(user.getLogin()).wsClient().wsConnector().call(new PostRequest("api/users/set_homepage") + .setParam("type", type) + .setParam("component", component)) + .failIfNotSuccessful(); + } + + private void checkHomepage(User user, HomepageType type, @Nullable Project project) { + Users.CurrentWsResponse current = tester.as(user.getLogin()).wsClient().users().current(); + assertThat(current.getHomepage().getType()).isEqualTo(type); + 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/UserSuite.java b/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java index d6b4ddb36ed..4eb7d0138dd 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java @@ -33,6 +33,7 @@ import static util.ItUtils.xooPlugin; BaseIdentityProviderTest.class, FavoritesWsTest.class, ForceAuthenticationTest.class, + HomepageTest.class, LocalAuthenticationTest.class, MyAccountPageTest.class, NotificationsWsTest.class, |