|
|
@@ -23,7 +23,6 @@ package org.sonar.server.usergroups.ws; |
|
|
|
import com.google.common.collect.Multimap; |
|
|
|
import java.util.Arrays; |
|
|
|
import org.apache.commons.lang.StringUtils; |
|
|
|
import org.junit.After; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Rule; |
|
|
|
import org.junit.Test; |
|
|
@@ -31,77 +30,88 @@ import org.junit.experimental.categories.Category; |
|
|
|
import org.junit.rules.ExpectedException; |
|
|
|
import org.sonar.api.utils.System2; |
|
|
|
import org.sonar.core.permission.GlobalPermissions; |
|
|
|
import org.sonar.db.DbClient; |
|
|
|
import org.sonar.db.DbSession; |
|
|
|
import org.sonar.db.DbTester; |
|
|
|
import org.sonar.db.user.GroupDao; |
|
|
|
import org.sonar.db.user.GroupDto; |
|
|
|
import org.sonar.db.user.GroupMembershipDao; |
|
|
|
import org.sonar.db.user.UserDao; |
|
|
|
import org.sonar.db.user.UserDto; |
|
|
|
import org.sonar.db.user.UserGroupDao; |
|
|
|
import org.sonar.db.user.UserGroupDto; |
|
|
|
import org.sonar.server.db.DbClient; |
|
|
|
import org.sonar.server.exceptions.NotFoundException; |
|
|
|
import org.sonar.server.tester.UserSessionRule; |
|
|
|
import org.sonar.db.user.GroupDao; |
|
|
|
import org.sonar.db.user.UserDao; |
|
|
|
import org.sonar.server.ws.WsTester; |
|
|
|
import org.sonar.test.DbTests; |
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
import static org.sonar.server.usergroups.ws.UserGroupsWsParameters.PARAM_GROUP_NAME; |
|
|
|
import static org.sonar.server.usergroups.ws.UserGroupsWsParameters.PARAM_LOGIN; |
|
|
|
|
|
|
|
@Category(DbTests.class) |
|
|
|
public class AddUserActionTest { |
|
|
|
|
|
|
|
@Rule |
|
|
|
public DbTester dbTester = DbTester.create(System2.INSTANCE); |
|
|
|
|
|
|
|
public DbTester db = DbTester.create(System2.INSTANCE); |
|
|
|
@Rule |
|
|
|
public final UserSessionRule userSession = UserSessionRule.standalone(); |
|
|
|
|
|
|
|
@Rule |
|
|
|
public final ExpectedException expectedException = ExpectedException.none(); |
|
|
|
|
|
|
|
private WsTester tester; |
|
|
|
private WsTester ws; |
|
|
|
private GroupDao groupDao; |
|
|
|
private UserDao userDao; |
|
|
|
private GroupMembershipDao groupMembershipDao; |
|
|
|
private UserGroupDao userGroupDao; |
|
|
|
private DbSession session; |
|
|
|
private DbSession dbSession; |
|
|
|
|
|
|
|
@Before |
|
|
|
public void setUp() { |
|
|
|
dbTester.truncateTables(); |
|
|
|
dbSession = db.getSession(); |
|
|
|
DbClient dbClient = db.getDbClient(); |
|
|
|
|
|
|
|
groupDao = new GroupDao(System2.INSTANCE); |
|
|
|
userDao = new UserDao(dbTester.myBatis(), System2.INSTANCE); |
|
|
|
groupMembershipDao = new GroupMembershipDao(dbTester.myBatis()); |
|
|
|
userGroupDao = new UserGroupDao(); |
|
|
|
groupDao = dbClient.groupDao(); |
|
|
|
userDao = dbClient.userDao(); |
|
|
|
groupMembershipDao = dbClient.groupMembershipDao(); |
|
|
|
userGroupDao = dbClient.userGroupDao(); |
|
|
|
|
|
|
|
DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), groupDao, userDao, userGroupDao, groupMembershipDao); |
|
|
|
|
|
|
|
tester = new WsTester(new UserGroupsWs(new AddUserAction(dbClient, userSession))); |
|
|
|
|
|
|
|
session = dbClient.openSession(false); |
|
|
|
} |
|
|
|
|
|
|
|
@After |
|
|
|
public void after() { |
|
|
|
session.close(); |
|
|
|
ws = new WsTester(new UserGroupsWs(new AddUserAction(dbClient, new UserGroupFinder(dbClient), userSession))); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void add_user_nominal() throws Exception { |
|
|
|
GroupDto group = insertGroup("admins"); |
|
|
|
UserDto user = insertUser("my-admin"); |
|
|
|
session.commit(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
tester.newPostRequest("api/usergroups", "add_user") |
|
|
|
newRequest() |
|
|
|
.setParam("id", group.getId().toString()) |
|
|
|
.setParam("login", user.getLogin()) |
|
|
|
.execute() |
|
|
|
.assertNoContent(); |
|
|
|
|
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(session, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(dbSession, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
.containsOnly(group.getName()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void add_user_with_group_name() throws Exception { |
|
|
|
GroupDto group = insertGroup("group_name"); |
|
|
|
UserDto user = insertUser("user_login"); |
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(dbSession, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
.isEmpty(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
newRequest() |
|
|
|
.setParam(PARAM_GROUP_NAME, group.getName()) |
|
|
|
.setParam(PARAM_LOGIN, user.getLogin()) |
|
|
|
.execute() |
|
|
|
.assertNoContent(); |
|
|
|
|
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(dbSession, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
.containsOnly(group.getName()); |
|
|
|
} |
|
|
|
|
|
|
@@ -111,16 +121,16 @@ public class AddUserActionTest { |
|
|
|
GroupDto users = insertGroup("users"); |
|
|
|
UserDto user = insertUser("my-admin"); |
|
|
|
insertMember(users.getId(), user.getId()); |
|
|
|
session.commit(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
tester.newPostRequest("api/usergroups", "add_user") |
|
|
|
newRequest() |
|
|
|
.setParam("id", admins.getId().toString()) |
|
|
|
.setParam("login", user.getLogin()) |
|
|
|
.execute() |
|
|
|
.assertNoContent(); |
|
|
|
|
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(session, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(dbSession, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
.containsOnly(admins.getName(), users.getName()); |
|
|
|
} |
|
|
|
|
|
|
@@ -129,16 +139,16 @@ public class AddUserActionTest { |
|
|
|
GroupDto users = insertGroup("users"); |
|
|
|
UserDto user = insertUser("my-admin"); |
|
|
|
insertMember(users.getId(), user.getId()); |
|
|
|
session.commit(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
tester.newPostRequest("api/usergroups", "add_user") |
|
|
|
newRequest() |
|
|
|
.setParam("id", users.getId().toString()) |
|
|
|
.setParam("login", user.getLogin()) |
|
|
|
.execute() |
|
|
|
.assertNoContent(); |
|
|
|
|
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(session, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
assertThat(groupMembershipDao.selectGroupsByLogins(dbSession, Arrays.asList(user.getLogin())).get(user.getLogin())) |
|
|
|
.containsOnly(users.getName()); |
|
|
|
} |
|
|
|
|
|
|
@@ -148,16 +158,16 @@ public class AddUserActionTest { |
|
|
|
UserDto user1 = insertUser("user1"); |
|
|
|
UserDto user2 = insertUser("user2"); |
|
|
|
insertMember(users.getId(), user1.getId()); |
|
|
|
session.commit(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
tester.newPostRequest("api/usergroups", "add_user") |
|
|
|
newRequest() |
|
|
|
.setParam("id", users.getId().toString()) |
|
|
|
.setParam("login", user2.getLogin()) |
|
|
|
.execute() |
|
|
|
.assertNoContent(); |
|
|
|
|
|
|
|
Multimap<String, String> groupsByLogins = groupMembershipDao.selectGroupsByLogins(session, Arrays.asList(user1.getLogin(), user2.getLogin())); |
|
|
|
Multimap<String, String> groupsByLogins = groupMembershipDao.selectGroupsByLogins(dbSession, Arrays.asList(user1.getLogin(), user2.getLogin())); |
|
|
|
assertThat(groupsByLogins.get(user1.getLogin())).containsOnly(users.getName()); |
|
|
|
assertThat(groupsByLogins.get(user2.getLogin())).containsOnly(users.getName()); |
|
|
|
} |
|
|
@@ -165,12 +175,12 @@ public class AddUserActionTest { |
|
|
|
@Test |
|
|
|
public void unknown_group() throws Exception { |
|
|
|
UserDto user = insertUser("my-admin"); |
|
|
|
session.commit(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
expectedException.expect(NotFoundException.class); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
tester.newPostRequest("api/usergroups", "add_user") |
|
|
|
newRequest() |
|
|
|
.setParam("id", "42") |
|
|
|
.setParam("login", user.getLogin()) |
|
|
|
.execute(); |
|
|
@@ -179,28 +189,32 @@ public class AddUserActionTest { |
|
|
|
@Test |
|
|
|
public void unknown_user() throws Exception { |
|
|
|
GroupDto group = insertGroup("admins"); |
|
|
|
session.commit(); |
|
|
|
dbSession.commit(); |
|
|
|
|
|
|
|
expectedException.expect(NotFoundException.class); |
|
|
|
|
|
|
|
userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); |
|
|
|
tester.newPostRequest("api/usergroups", "add_user") |
|
|
|
newRequest() |
|
|
|
.setParam("id", group.getId().toString()) |
|
|
|
.setParam("login", "my-admin") |
|
|
|
.execute(); |
|
|
|
} |
|
|
|
|
|
|
|
private WsTester.TestRequest newRequest() { |
|
|
|
return ws.newPostRequest("api/usergroups", "add_user"); |
|
|
|
} |
|
|
|
|
|
|
|
private GroupDto insertGroup(String groupName) { |
|
|
|
return groupDao.insert(session, new GroupDto() |
|
|
|
return groupDao.insert(dbSession, new GroupDto() |
|
|
|
.setName(groupName) |
|
|
|
.setDescription(StringUtils.capitalize(groupName))); |
|
|
|
} |
|
|
|
|
|
|
|
private UserDto insertUser(String login) { |
|
|
|
return userDao.insert(session, new UserDto().setLogin(login).setName(login).setActive(true)); |
|
|
|
return userDao.insert(dbSession, new UserDto().setLogin(login).setName(login).setActive(true)); |
|
|
|
} |
|
|
|
|
|
|
|
private void insertMember(long groupId, long userId) { |
|
|
|
userGroupDao.insert(session, new UserGroupDto().setGroupId(groupId).setUserId(userId)); |
|
|
|
userGroupDao.insert(dbSession, new UserGroupDto().setGroupId(groupId).setUserId(userId)); |
|
|
|
} |
|
|
|
} |