}
public List<UserMembershipDto> selectMembers(DbSession session, UserMembershipQuery query, int offset, int limit) {
- Map<String, Object> params = ImmutableMap.of("query", query, "groupId", query.groupId());
+ Map<String, Object> params = ImmutableMap.of("query", query, "groupId", query.groupId(), "organizationUuid", query.organizationUuid());
return mapper(session).selectMembers(params, new RowBounds(offset, limit));
}
public int countMembers(DbSession session, UserMembershipQuery query) {
- Map<String, Object> params = ImmutableMap.of("query", query, "groupId", query.groupId());
+ Map<String, Object> params = ImmutableMap.of("query", query, "groupId", query.groupId(), "organizationUuid", query.organizationUuid());
return mapper(session).countMembers(params);
}
import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
+import static java.util.Objects.requireNonNull;
import static org.sonar.db.DaoDatabaseUtils.buildLikeValue;
import static org.sonar.db.WildcardPosition.BEFORE_AND_AFTER;
public static final Set<String> AVAILABLE_MEMBERSHIPS = ImmutableSet.of(ANY, IN, OUT);
private final int groupId;
+ private final String organizationUuid;
private final String membership;
private final String memberSearch;
private UserMembershipQuery(Builder builder) {
this.groupId = builder.groupId;
+ this.organizationUuid = builder.organizationUuid;
this.membership = builder.membership;
this.memberSearch = builder.memberSearch;
this.memberSearchSql = memberSearch == null ? null : buildLikeValue(memberSearch, BEFORE_AND_AFTER);
return groupId;
}
+ public String organizationUuid() {
+ return organizationUuid;
+ }
+
@CheckForNull
public String membership() {
return membership;
public static class Builder {
private Integer groupId;
+ private String organizationUuid;
private String membership;
private String memberSearch;
return this;
}
+ public Builder organizationUuid(String organizationUuid) {
+ this.organizationUuid = organizationUuid;
+ return this;
+ }
+
public Builder membership(@Nullable String membership) {
this.membership = membership;
return this;
}
public UserMembershipQuery build() {
- checkNotNull(groupId, "Group ID cant be null.");
+ requireNonNull(groupId, "Group ID cant be null.");
+ requireNonNull(organizationUuid, "Organization UUID cannot be null");
initMembership();
initPageIndex();
initPageSize();
<sql id="userCommonClauses">
FROM users u
LEFT JOIN groups_users gu ON gu.user_id=u.id AND gu.group_id=#{groupId}
+ INNER JOIN organization_members om ON u.id=om.user_id AND om.organization_uuid=#{organizationUuid}
<where>
<choose>
<when test="query.membership() == 'IN'">
group1 = db.users().insertGroup(organizationDto, "sonar-administrators");
group2 = db.users().insertGroup(organizationDto, "sonar-users");
group3 = db.users().insertGroup(organizationDto, "sonar-reviewers");
+ db.organizations().addMember(organizationDto, user1);
+ db.organizations().addMember(organizationDto, user2);
}
@Test
db.users().insertMember(group2, user2);
// 100 has 1 member and 1 non member
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).membership(UserMembershipQuery.IN).build())).isEqualTo(1);
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).membership(UserMembershipQuery.OUT).build())).isEqualTo(1);
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(group1.getId()).membership(UserMembershipQuery.IN).build())).isEqualTo(1);
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(group1.getId()).membership(UserMembershipQuery.OUT).build())).isEqualTo(1);
// 101 has 2 members
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(group2.getId()).membership(UserMembershipQuery.IN).build())).isEqualTo(2);
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(group2.getId()).membership(UserMembershipQuery.OUT).build())).isZero();
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(group2.getId()).membership(UserMembershipQuery.IN).build())).isEqualTo(2);
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(group2.getId()).membership(UserMembershipQuery.OUT).build())).isZero();
// 102 has 1 member and 1 non member
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(group3.getId()).membership(UserMembershipQuery.IN).build())).isEqualTo(1);
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(group3.getId()).membership(UserMembershipQuery.OUT).build())).isEqualTo(1);
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(group3.getId()).membership(UserMembershipQuery.IN).build())).isEqualTo(1);
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(group3.getId()).membership(UserMembershipQuery.OUT).build())).isEqualTo(1);
// 103 has no member
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(emptyGroup.getId()).membership(UserMembershipQuery.IN).build())).isZero();
- assertThat(underTest.countMembers(db.getSession(), UserMembershipQuery.builder().groupId(emptyGroup.getId()).membership(UserMembershipQuery.OUT).build())).isEqualTo(2);
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(emptyGroup.getId()).membership(UserMembershipQuery.IN).build())).isZero();
+ assertThat(underTest.countMembers(db.getSession(), newQuery().groupId(emptyGroup.getId()).membership(UserMembershipQuery.OUT).build())).isEqualTo(2);
}
@Test
db.users().insertMember(group2, user2);
// 100 has 1 member
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).hasSize(1);
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).hasSize(1);
// 101 has 2 members
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group2.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).hasSize(2);
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(group2.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).hasSize(2);
// 102 has 1 member
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group3.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).hasSize(1);
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(group3.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).hasSize(1);
// 103 has no member
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(emptyGroup.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).isEmpty();
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(emptyGroup.getId()).membership(UserMembershipQuery.IN).build(), 0, 10)).isEmpty();
}
@Test
db.users().insertMember(group2, user2);
// 100 has 1 member
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).hasSize(1);
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).hasSize(1);
// 101 has 2 members
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group2.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).isEmpty();
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(group2.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).isEmpty();
// 102 has 1 member
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group3.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).hasSize(1);
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(group3.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).hasSize(1);
// 103 has no member
- assertThat(underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(emptyGroup.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).hasSize(2);
+ assertThat(underTest.selectMembers(db.getSession(), newQuery().groupId(emptyGroup.getId()).membership(UserMembershipQuery.OUT).build(), 0, 10)).hasSize(2);
}
@Test
db.users().insertMember(group3, user1);
db.users().insertMember(group2, user2);
- List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).memberSearch("admin").build(), 0, 10);
+ List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).memberSearch("admin").build(), 0, 10);
assertThat(result).hasSize(2);
assertThat(result.get(0).getName()).isEqualTo("Admin name");
assertThat(result.get(1).getName()).isEqualTo("Not Admin");
- result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).memberSearch("not").build(), 0, 10);
+ result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).memberSearch("not").build(), 0, 10);
assertThat(result).hasSize(1);
}
db.users().insertMember(group2, user2);
// search is case insensitive only on name
- List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).memberSearch("NaMe").build(), 0, 10);
+ List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).memberSearch("NaMe").build(), 0, 10);
assertThat(result).hasSize(1);
- result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).memberSearch("login").build(), 0, 10);
+ result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).memberSearch("login").build(), 0, 10);
assertThat(result).hasSize(1);
- result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).memberSearch("email").build(), 0, 10);
+ result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).memberSearch("email").build(), 0, 10);
assertThat(result).hasSize(1);
}
db.users().insertMember(group3, user1);
db.users().insertMember(group2, user2);
- List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).build(), 0, 10);
+ List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).build(), 0, 10);
assertThat(result).hasSize(2);
assertThat(result.get(0).getName()).isEqualTo("Admin name");
assertThat(result.get(1).getName()).isEqualTo("Not Admin");
db.users().insertMember(group3, user1);
db.users().insertMember(group2, user2);
- List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(group1.getId()).build(), 0, 2);
+ List<UserMembershipDto> result = underTest.selectMembers(db.getSession(), newQuery().groupId(group1.getId()).build(), 0, 2);
assertThat(result).hasSize(2);
assertThat(result.get(0).getName()).isEqualTo("Admin name");
assertThat(result.get(1).getName()).isEqualTo("Not Admin");
- result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(100).build(), 1, 2);
+ result = underTest.selectMembers(db.getSession(), newQuery().groupId(100).build(), 1, 2);
assertThat(result).hasSize(1);
assertThat(result.get(0).getName()).isEqualTo("Not Admin");
- result = underTest.selectMembers(db.getSession(), UserMembershipQuery.builder().groupId(100).build(), 2, 1);
+ result = underTest.selectMembers(db.getSession(), newQuery().groupId(100).build(), 2, 1);
assertThat(result).isEmpty();
}
+
+ private UserMembershipQuery.Builder newQuery() {
+ return UserMembershipQuery.builder().organizationUuid(organizationDto.getUuid());
+ }
}
private void writeResponse(DbSession dbSession, Request request, Response response, OrganizationDto organization, GroupDto group) {
UserMembershipQuery query = UserMembershipQuery.builder()
.groupId(group.getId())
+ .organizationUuid(organization.getUuid())
.membership(UserMembershipQuery.IN)
.build();
int membersCount = dbClient.groupMembershipDao().countMembers(dbSession, query);
UserMembershipQuery query = UserMembershipQuery.builder()
.groupId(group.getId())
+ .organizationUuid(group.getOrganizationUuid())
.memberSearch(queryString)
.membership(getMembership(selected))
.pageIndex(page)
.containsOnly(GlobalPermissions.ALL.toArray(new String[GlobalPermissions.ALL.size()]));
List<UserMembershipDto> members = dbClient.groupMembershipDao().selectMembers(
dbSession,
- UserMembershipQuery.builder().groupId(groupDto.getId()).membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE);
+ UserMembershipQuery.builder()
+ .organizationUuid(organization.getUuid())
+ .groupId(groupDto.getId())
+ .membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE);
assertThat(members)
.extracting(UserMembershipDto::getLogin)
.containsOnly(user.getLogin());
.containsOnly(GlobalPermissions.ALL.toArray(new String[GlobalPermissions.ALL.size()]));
List<UserMembershipDto> members = dbClient.groupMembershipDao().selectMembers(
dbSession,
- UserMembershipQuery.builder().groupId(groupDto.getId()).membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE);
+ UserMembershipQuery.builder()
+ .organizationUuid(organization.getUuid())
+ .groupId(groupDto.getId())
+ .membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE);
assertThat(members)
.extracting(UserMembershipDto::getLogin)
.containsOnly(user.getLogin());
GroupDto group = db.users().insertGroup();
UserDto user = db.users().insertUser();
db.users().insertMember(group, user);
+ db.organizations().addMember(db.getDefaultOrganization(), user);
loginAsAdminOnDefaultOrganization();
newRequest()
@Test
public void return_members_by_group_id() throws Exception {
GroupDto group = db.users().insertGroup();
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
- db.users().insertMember(group, user1);
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), hopper);
loginAsAdminOnDefaultOrganization();
newUsersRequest()
public void references_group_by_its_name() throws Exception {
OrganizationDto org = db.organizations().insert();
GroupDto group = db.users().insertGroup(org, "the-group");
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
- db.users().insertMember(group, user1);
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(org, lovelace);
+ db.organizations().addMember(org, hopper);
loginAsAdmin(org);
newUsersRequest()
@Test
public void references_group_in_default_organization_by_its_name() throws Exception {
GroupDto group = db.users().insertGroup();
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
- db.users().insertMember(group, user1);
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), hopper);
loginAsAdminOnDefaultOrganization();
newUsersRequest()
UserDto graceHopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
db.users().insertMember(group, adaLovelace);
db.users().insertMember(group, graceHopper);
+ db.organizations().addMember(db.getDefaultOrganization(), adaLovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), graceHopper);
loginAsAdminOnDefaultOrganization();
String response = newUsersRequest().setParam(PARAM_GROUP_ID, group.getId().toString()).execute().outputAsString();
@Test
public void selected_users() throws Exception {
GroupDto group = db.users().insertGroup(db.getDefaultOrganization(), "a group");
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada").setName("Ada Lovelace"));
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
- db.users().insertMember(group, user1);
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada").setName("Ada Lovelace"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), hopper);
loginAsAdminOnDefaultOrganization();
newUsersRequest()
@Test
public void deselected_users() throws Exception {
GroupDto group = db.users().insertGroup();
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada").setName("Ada Lovelace"));
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
- db.users().insertMember(group, user1);
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada").setName("Ada Lovelace"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), hopper);
loginAsAdminOnDefaultOrganization();
newUsersRequest()
@Test
public void paging() throws Exception {
GroupDto group = db.users().insertGroup();
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada").setName("Ada Lovelace"));
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
- db.users().insertMember(group, user1);
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada").setName("Ada Lovelace"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), hopper);
loginAsAdminOnDefaultOrganization();
newUsersRequest()
@Test
public void filtering_by_name_email_and_login() throws Exception {
GroupDto group = db.users().insertGroup();
- UserDto user1 = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace").setEmail("ada@email.com"));
- db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper").setEmail("grace@hopper.com"));
- db.users().insertMember(group, user1);
+ UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace").setEmail("ada@email.com"));
+ UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper").setEmail("grace@hopper.com"));
+ db.users().insertMember(group, lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), lovelace);
+ db.organizations().addMember(db.getDefaultOrganization(), hopper);
loginAsAdminOnDefaultOrganization();
newUsersRequest()