aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGrégoire Aubert <gregoire.aubert@sonarsource.com>2017-11-20 12:36:09 +0100
committerGrégoire Aubert <gregoire.aubert@sonarsource.com>2017-11-24 17:22:33 +0100
commitad4567f4361fa1843cd57dc614e0ed0c653c86d2 (patch)
treed4cbcdc63fcfc8a8cdc477136c679dfd4367b4bd /tests
parentafff558a2cac07019ff5886ccdada9eb25aa1b0c (diff)
downloadsonarqube-ad4567f4361fa1843cd57dc614e0ed0c653c86d2.tar.gz
sonarqube-ad4567f4361fa1843cd57dc614e0ed0c653c86d2.zip
Update users permission IT's
Diffstat (limited to 'tests')
-rw-r--r--tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java15
-rw-r--r--tests/src/test/java/org/sonarqube/tests/user/UsersPageTest.java49
-rw-r--r--tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html149
-rw-r--r--tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html96
-rw-r--r--tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html111
5 files changed, 47 insertions, 373 deletions
diff --git a/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java b/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java
index 686732cb340..a99d247263c 100644
--- a/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java
+++ b/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java
@@ -19,6 +19,7 @@
*/
package org.sonarqube.tests.user;
+import com.codeborne.selenide.Condition;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.sonar.orchestrator.Orchestrator;
@@ -37,7 +38,9 @@ import org.sonar.wsclient.connectors.HttpClient4Connector;
import org.sonar.wsclient.services.AuthenticationQuery;
import org.sonar.wsclient.user.UserParameters;
import org.sonarqube.qa.util.Tester;
+import org.sonarqube.qa.util.pageobjects.Navigation;
import org.sonarqube.qa.util.pageobjects.SystemInfoPage;
+import org.sonarqube.qa.util.pageobjects.UsersManagementPage;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.WsResponse;
import org.sonarqube.ws.client.user.CreateRequest;
@@ -233,7 +236,17 @@ public class RealmAuthenticationTest {
// Given clean Sonar installation and no users in external system
// Let's create and delete the user "tester" in Sonar DB
- runSelenese(orchestrator, "/user/ExternalAuthenticationTest/create-and-delete-user.html");
+ Navigation nav = tester.openBrowser();
+ UsersManagementPage page = nav.logIn().submitCredentials(ADMIN_USER_LOGIN).openUsersManagement();
+ page
+ .createUser(USER_LOGIN)
+ .hasUsersCount(3)
+ .getUser(USER_LOGIN)
+ .deactivateUser();
+ page.hasUsersCount(2);
+ nav.logOut()
+ .logIn().submitWrongCredentials(USER_LOGIN, USER_LOGIN)
+ .getErrorMessage().shouldHave(Condition.text("Authentication failed"));
// And now update the security with the user that was deleted
String login = USER_LOGIN;
diff --git a/tests/src/test/java/org/sonarqube/tests/user/UsersPageTest.java b/tests/src/test/java/org/sonarqube/tests/user/UsersPageTest.java
index 38b62681a9c..2aa83ffae74 100644
--- a/tests/src/test/java/org/sonarqube/tests/user/UsersPageTest.java
+++ b/tests/src/test/java/org/sonarqube/tests/user/UsersPageTest.java
@@ -20,26 +20,27 @@
package org.sonarqube.tests.user;
import com.sonar.orchestrator.Orchestrator;
+import org.junit.After;
+import org.sonarqube.ws.Users.CreateWsResponse.User;
+import org.sonarqube.qa.util.Tester;
+import org.sonarqube.qa.util.pageobjects.UsersManagementPage;
import org.sonarqube.tests.Category1Suite;
import java.util.List;
-import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.sonarqube.ws.Users;
-import org.sonarqube.ws.client.WsClient;
import org.sonarqube.ws.client.user.GroupsRequest;
-import util.selenium.Selenese;
import util.user.UserRule;
+
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
import static org.assertj.core.api.Assertions.assertThat;
-import static util.ItUtils.newAdminWsClient;
public class UsersPageTest {
- private static final String ADMIN_USER_LOGIN = "admin-user";
+ private User adminUser;
@ClassRule
public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR;
@@ -47,38 +48,54 @@ public class UsersPageTest {
@Rule
public UserRule userRule = UserRule.from(orchestrator);
- private WsClient adminClient = newAdminWsClient(orchestrator);
+ @Rule
+ public Tester tester = new Tester(orchestrator).disableOrganizations();
@Before
- public void initAdminUser() throws Exception {
- userRule.createAdminUser(ADMIN_USER_LOGIN, ADMIN_USER_LOGIN);
+ public void initUsers() throws Exception {
+ adminUser = tester.users().generateAdministrator(u -> u.setLogin("admin-user").setPassword("admin-user"));
+ tester.users().generate(u -> u.setLogin("random-user").setPassword("random-user"));
}
@After
- public void deleteAdminUser() {
+ public void resetUsers() {
userRule.resetUsers();
}
@Test
public void generate_and_revoke_user_token() {
- Selenese.runSelenese(orchestrator, "/user/UsersPageTest/generate_and_revoke_user_token.html");
+ UsersManagementPage page = tester.openBrowser().logIn().submitCredentials(adminUser.getLogin()).openUsersManagement();
+ tester.wsClient().users().skipOnboardingTutorial();
+
+ page
+ .hasUsersCount(3)
+ .getUser(adminUser.getLogin())
+ .hasTokensCount(0)
+ .generateToken("token-test")
+ .hasTokensCount(1)
+ .revokeToken("token-test")
+ .hasTokensCount(0);
}
@Test
public void admin_should_change_his_own_password() {
- Selenese.runSelenese(orchestrator, "/user/UsersPageTest/admin_should_change_its_own_password.html");
+ UsersManagementPage page = tester.openBrowser().logIn().submitCredentials(adminUser.getLogin()).openUsersManagement();
+ tester.wsClient().users().skipOnboardingTutorial();
+ page
+ .hasUsersCount(3)
+ .getUser(adminUser.getLogin())
+ .changePassword(adminUser.getLogin(), "newpassword");
}
@Test
public void return_groups_belonging_to_a_user() {
String login = randomAlphabetic(10);
String group = randomAlphabetic(10);
- userRule.createUser(login, login);
- userRule.createGroup(group);
- userRule.associateGroupsToUser(login, group);
-
- List<Users.GroupsWsResponse.Group> result = adminClient.users().groups(GroupsRequest.builder().setLogin(login).build()).getGroupsList();
+ tester.users().generate(u -> u.setLogin(login).setPassword(login));
+ tester.groups().generate(null, g -> g.setName(group));
+ tester.groups().addMemberToGroups(tester.organizations().getDefaultOrganization(), login, group);
+ List<Users.GroupsWsResponse.Group> result = tester.as(adminUser.getLogin()).wsClient().users().groups(GroupsRequest.builder().setLogin(login).build()).getGroupsList();
assertThat(result).extracting(Users.GroupsWsResponse.Group::getName).contains(group);
}
}
diff --git a/tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html b/tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html
deleted file mode 100644
index 9be06a9320a..00000000000
--- a/tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http:/www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head profile="http:/selenium-ide.openqa.org/profiles/test-case">
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>create-and-delete-users</title>
-</head>
-<body>
-<table cellpadding="1" cellspacing="1" border="1">
- <thead>
- <tr>
- <td rowspan="1" colspan="3">create-and-delete-users</td>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>open</td>
- <td>/sessions/new</td>
- <td></td>
-</tr>
-<tr>
- <td>type</td>
- <td>login</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>type</td>
- <td>password</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>clickAndWait</td>
- <td>commit</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.js-user-authenticated</td>
- <td></td>
-</tr>
-<tr>
- <td>open</td>
- <td>/users</td>
- <td></td>
-</tr>
-<tr>
- <td>store</td>
- <td>javascript{new Date().getTime()}</td>
- <td>userId</td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>content</td>
- <td>*Create User*</td>
-</tr>
-<tr>
- <td>click</td>
- <td>id=users-create</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>id=create-user-form</td>
- <td>*Create User*</td>
-</tr>
-<tr>
- <td>type</td>
- <td>id=create-user-login</td>
- <td>${userId}</td>
-</tr>
-<tr>
- <td>type</td>
- <td>id=create-user-name</td>
- <td>Name of ${userId}</td>
-</tr>
-<tr>
- <td>type</td>
- <td>id=create-user-password</td>
- <td>password</td>
-</tr>
-<tr>
- <td>click</td>
- <td>id=create-user-submit</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>id=users-list</td>
- <td>*${userId}*</td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=[data-login=&quot;${userId}&quot;] .dropdown-toggle</td>
- <td></td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=[data-login=&quot;${userId}&quot;] .js-user-deactivate</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>id=deactivate-user-form</td>
- <td>*${userId}*</td>
-</tr>
-<tr>
- <td>click</td>
- <td>id=deactivate-user-submit</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForNotText</td>
- <td>id=users-list</td>
- <td>*${userId}*</td>
-</tr>
-<tr>
- <td>open</td>
- <td>/sessions/logout</td>
- <td></td>
-</tr>
-<tr>
- <td>open</td>
- <td>/sessions/new</td>
- <td></td>
-</tr>
-<tr>
- <td>type</td>
- <td>login</td>
- <td>tester</td>
-</tr>
-<tr>
- <td>type</td>
- <td>password</td>
- <td>password</td>
-</tr>
-<tr>
- <td>clickAndWait</td>
- <td>commit</td>
- <td>deactivate-user-form</td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>login_form</td>
- <td>*Authentication failed*</td>
-</tr>
-</tbody>
-</table>
-</body>
-</html>
diff --git a/tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html b/tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html
deleted file mode 100644
index 228686fcd62..00000000000
--- a/tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head profile="http://selenium-ide.openqa.org/profiles/test-case">
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <link rel="selenium.base" href="http://localhost:49506"/>
- <title>admin_should_change_its_own_password</title>
-</head>
-<body>
-<table cellpadding="1" cellspacing="1" border="1">
-<thead>
-<tr>
-<td rowspan="1" colspan="3">admin_should_change_its_own_password</td>
-</tr>
-</thead>
-<tbody>
-
-<tr>
- <td>open</td>
- <td>/sessions/login</td>
- <td></td>
-</tr>
-<tr>
- <td>type</td>
- <td>login</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>type</td>
- <td>password</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>clickAndWait</td>
- <td>commit</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.js-user-authenticated</td>
- <td></td>
-</tr>
-<tr>
- <td>open</td>
- <td>/users</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=[data-login=admin-user]</td>
- <td></td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=[data-login=admin-user] .dropdown-toggle</td>
- <td></td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=[data-login=admin-user] .js-user-change-password</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.modal</td>
- <td></td>
-</tr>
-<tr>
- <td>type</td>
- <td>id=change-user-password-old-password</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>type</td>
- <td>id=change-user-password-password</td>
- <td>new-admin-user</td>
-</tr>
-<tr>
- <td>type</td>
- <td>id=change-user-password-password-confirmation</td>
- <td>new-admin-user</td>
-</tr>
-<tr>
- <td>click</td>
- <td>id=change-user-password-submit</td>
- <td></td>
-</tr>
-<tr>
- <td>assertElementNotPresent</td>
- <td>css=.modal</td>
- <td></td>
-</tr>
-</tbody>
-</table>
-</body>
-</html>
diff --git a/tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html b/tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html
deleted file mode 100644
index 1c816cbd3d7..00000000000
--- a/tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head profile="http://selenium-ide.openqa.org/profiles/test-case">
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <link rel="selenium.base" href="http://localhost:49506"/>
- <title>generate_and_revoke_user_token</title>
-</head>
-<body>
-<table cellpadding="1" cellspacing="1" border="1">
- <thead>
- <tr>
- <td rowspan="1" colspan="3">generate_and_revoke_user_token</td>
- </tr>
- </thead>
- <tbody>
-
-<tr>
- <td>open</td>
- <td>/sessions/new</td>
- <td></td>
-</tr>
-<tr>
- <td>type</td>
- <td>login</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>type</td>
- <td>password</td>
- <td>admin-user</td>
-</tr>
-<tr>
- <td>clickAndWait</td>
- <td>commit</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.js-user-authenticated</td>
- <td></td>
-</tr>
-<tr>
- <td>open</td>
- <td>/users</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.js-user-tokens</td>
- <td></td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=.js-user-tokens</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>css=.modal</td>
- <td>*No tokens*</td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.js-generate-token-form input</td>
- <td></td>
-</tr>
-<tr>
- <td>type</td>
- <td>css=.js-generate-token-form input</td>
- <td>test-token</td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=.js-generate-token-form button</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.modal code</td>
- <td></td>
-</tr>
-<tr>
- <td>waitForText</td>
- <td>css=.modal</td>
- <td>*test-token*</td>
-</tr>
-<tr>
- <td>waitForElementPresent</td>
- <td>css=.js-revoke-token-form</td>
- <td></td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=.js-revoke-token-form button</td>
- <td></td>
-</tr>
-<tr>
- <td>click</td>
- <td>css=.js-revoke-token-form button</td>
- <td></td>
-</tr>
-<tr>
- <td>assertElementNotPresent</td>
- <td>css=.js-revoke-token-form</td>
- <td></td>
-</tr>
-</tbody>
-</table>
-</body>
-</html>