@Test public void create_query() { GroupMembershipQuery underTest = GroupMembershipQuery.builder() .groupSearch("sonar-users") .membership(GroupMembershipQuery.IN) .pageIndex(2) .pageSize(10) .organizationUuid("organization_uuid") .build(); assertThat(underTest.groupSearch()).isEqualTo("sonar-users"); assertThat(underTest.membership()).isEqualTo("IN"); assertThat(underTest.pageIndex()).isEqualTo(2); assertThat(underTest.pageSize()).isEqualTo(10); assertThat(underTest.organizationUuid()).isEqualTo("organization_uuid"); }
@Test public void fail_on_null_organization() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("Organization uuid cant be null"); GroupMembershipQuery.builder() .organizationUuid(null) .build(); }
private void assertMember(String organizationUuid, int userId) { assertThat(dbClient.organizationMemberDao().select(dbSession, organizationUuid, userId)).isPresent(); Integer defaultGroupId = dbClient.organizationDao().getDefaultGroupId(dbSession, organizationUuid).get(); assertThat(db.getDbClient().groupMembershipDao().selectGroups(db.getSession(), GroupMembershipQuery.builder() .membership(IN) .organizationUuid(organizationUuid).build(), userId, 0, 10)) .extracting(GroupMembershipDto::getId) .containsOnly(defaultGroupId.longValue()); } }
@Test public void select_groups() { db.users().insertMember(group1, user1); db.users().insertMember(group2, user1); db.users().insertMember(group3, user1); db.users().insertMember(group2, user2); // user1 is member of 3 groups assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user1.getId(), 0, 10)).hasSize(3); assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), user1.getId(), 0, 10)).isEmpty(); // user2 is member of 1 group on 3 assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user2.getId(), 0, 10)).hasSize(1); assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), user2.getId(), 0, 10)).hasSize(2); // user3 is member of 0 group assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user3.getId(), 0, 10)).isEmpty(); assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), user3.getId(), 0, 10)).hasSize(3); // unknown user is member of 0 group assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), 999, 0, 10)).isEmpty(); assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), 999, 0, 10)).hasSize(3); }
@Test public void fail_on_invalid_membership() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Membership is not valid (got unknwown). Availables values are [ANY, IN, OUT]"); GroupMembershipQuery.builder() .organizationUuid("organization_uuid") .membership("unknwown") .build(); }
@Test public void count_groups() { db.users().insertMember(group1, user1); db.users().insertMember(group2, user1); db.users().insertMember(group3, user1); db.users().insertMember(group2, user2); // user1 is member of 3 groups assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user1.getId())).isEqualTo(3); assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), user1.getId())).isZero(); // user2 is member of 1 group on 3 assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user2.getId())).isEqualTo(1); assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), user2.getId())).isEqualTo(2); // user3 is member of 0 group assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user3.getId())).isZero(); assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), user3.getId())).isEqualTo(3); // unknown user is member of 0 group assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), 999)).isZero(); assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(OUT).build(), 999)).isEqualTo(3); }
@Test public void count_groups_only_from_given_organization() { OrganizationDto otherOrganization = db.organizations().insert(); GroupDto otherGroup = db.users().insertGroup(otherOrganization, "sonar-administrators-other_orga"); db.users().insertMember(group1, user1); db.users().insertMember(otherGroup, user1); assertThat(underTest.countGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user1.getId())).isEqualTo(1); }
@Test public void select_groups_only_from_given_organization() { OrganizationDto otherOrganization = db.organizations().insert(); GroupDto otherGroup = db.users().insertGroup(otherOrganization, "sonar-administrators-other_orga"); db.users().insertMember(group1, user1); db.users().insertMember(otherGroup, user1); assertThat(underTest.selectGroups(db.getSession(), builder().organizationUuid(organizationDto.getUuid()).membership(IN).build(), user1.getId(), 0, 10)).hasSize(1); }
@Override public void handle(Request request, Response response) throws Exception { String organizationKey = request.mandatoryParam(PARAM_ORGANIZATION); String login = request.mandatoryParam(PARAM_LOGIN); try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = checkFoundWithOptional(dbClient.organizationDao().selectByKey(dbSession, organizationKey), "Organization '%s' is not found", organizationKey); UserDto user = checkFound(dbClient.userDao().selectByLogin(dbSession, login), "User '%s' is not found", login); addMember(dbSession, organization, user); int groups = dbClient.groupMembershipDao().countGroups(dbSession, GroupMembershipQuery.builder() .organizationUuid(organization.getUuid()) .membership(IN) .build(), user.getId()); AddMemberWsResponse wsResponse = buildResponse(user, groups); writeProtobuf(wsResponse, request, response); } }
private GroupsWsResponse doHandle(GroupsRequest request) { try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = findOrganizationByKey(dbSession, request.getOrganization()); userSession.checkPermission(OrganizationPermission.ADMINISTER, organization); String login = request.getLogin(); GroupMembershipQuery query = GroupMembershipQuery.builder() .organizationUuid(organization.getUuid()) .groupSearch(request.getQuery()) .membership(getMembership(request.getSelected())) .pageIndex(request.getPage()) .pageSize(request.getPageSize()) .build(); UserDto user = checkFound(dbClient.userDao().selectActiveUserByLogin(dbSession, login), "Unknown user: %s", login); int total = dbClient.groupMembershipDao().countGroups(dbSession, query, user.getId()); Paging paging = forPageIndex(query.pageIndex()).withPageSize(query.pageSize()).andTotal(total); List<GroupMembershipDto> groups = dbClient.groupMembershipDao().selectGroups(dbSession, query, user.getId(), paging.offset(), query.pageSize()); return buildResponse(groups, defaultGroupFinder.findDefaultGroup(dbSession, organization.getUuid()), paging); } }
@Override public void handle(Request request, Response response) throws Exception { String organizationKey = request.mandatoryParam(PARAM_ORGANIZATION); String login = request.mandatoryParam(PARAM_LOGIN); try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = checkFoundWithOptional(dbClient.organizationDao().selectByKey(dbSession, organizationKey), "Organization '%s' is not found", organizationKey); UserDto user = checkFound(dbClient.userDao().selectByLogin(dbSession, login), "User '%s' is not found", login); addMember(dbSession, organization, user); int groups = dbClient.groupMembershipDao().countGroups(dbSession, GroupMembershipQuery.builder() .organizationUuid(organization.getUuid()) .membership(IN) .build(), user.getId()); AddMemberWsResponse wsResponse = buildResponse(user, groups); writeProtobuf(wsResponse, request, response); } }
private GroupsWsResponse doHandle(GroupsRequest request) { try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = findOrganizationByKey(dbSession, request.getOrganization()); userSession.checkPermission(OrganizationPermission.ADMINISTER, organization); String login = request.getLogin(); GroupMembershipQuery query = GroupMembershipQuery.builder() .organizationUuid(organization.getUuid()) .groupSearch(request.getQuery()) .membership(getMembership(request.getSelected())) .pageIndex(request.getPage()) .pageSize(request.getPageSize()) .build(); UserDto user = checkFound(dbClient.userDao().selectActiveUserByLogin(dbSession, login), "Unknown user: %s", login); int total = dbClient.groupMembershipDao().countGroups(dbSession, query, user.getId()); Paging paging = forPageIndex(query.pageIndex()).withPageSize(query.pageSize()).andTotal(total); List<GroupMembershipDto> groups = dbClient.groupMembershipDao().selectGroups(dbSession, query, user.getId(), paging.offset(), query.pageSize()); return buildResponse(groups, defaultGroupFinder.findDefaultGroup(dbSession, organization.getUuid()), paging); } }