private void verifyGroupOwners(UserDto user, String organizationKey, String organizationName) { OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, organizationKey).get(); Optional<GroupDto> groupOpt = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Owners"); assertThat(groupOpt).isPresent(); GroupDto groupDto = groupOpt.get(); assertThat(groupDto.getDescription()).isEqualTo("Owners of organization " + organizationName); assertThat(dbClient.groupPermissionDao().selectGlobalPermissionsOfGroup(dbSession, groupDto.getOrganizationUuid(), groupDto.getId())) .containsOnly(GlobalPermissions.ALL.toArray(new String[GlobalPermissions.ALL.size()])); List<UserMembershipDto> members = dbClient.groupMembershipDao().selectMembers( dbSession, UserMembershipQuery.builder() .organizationUuid(organization.getUuid()) .groupId(groupDto.getId()) .membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE); assertThat(members) .extracting(UserMembershipDto::getLogin) .containsOnly(user.getLogin()); }
private void verifyMembersGroup(UserDto user, String organizationKey) { OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, organizationKey).get(); Optional<GroupDto> groupOpt = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Members"); assertThat(groupOpt).isPresent(); GroupDto groupDto = groupOpt.get(); assertThat(groupDto.getDescription()).isEqualTo("All members of the organization"); assertThat(dbClient.groupPermissionDao().selectGlobalPermissionsOfGroup(dbSession, groupDto.getOrganizationUuid(), groupDto.getId())).isEmpty(); List<UserMembershipDto> members = dbClient.groupMembershipDao().selectMembers( dbSession, UserMembershipQuery.builder() .organizationUuid(organization.getUuid()) .groupId(groupDto.getId()) .membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE); assertThat(members) .extracting(UserMembershipDto::getLogin) .containsOnly(user.getLogin()); }
@Test public void request_creates_members_group_and_add_current_user_to_it() { UserDto user = db.users().insertUser(); userSession.logIn(user).setSystemAdministrator(); db.qualityGates().insertBuiltInQualityGate(); executeRequest("orgFoo"); DbSession dbSession = db.getSession(); OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, "orgfoo").get(); Optional<GroupDto> groupDtoOptional = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Members"); assertThat(groupDtoOptional).isNotEmpty(); GroupDto groupDto = groupDtoOptional.get(); assertThat(groupDto.getDescription()).isEqualTo("All members of the organization"); assertThat(dbClient.groupPermissionDao().selectGlobalPermissionsOfGroup(dbSession, groupDto.getOrganizationUuid(), groupDto.getId())).isEmpty(); List<UserMembershipDto> members = dbClient.groupMembershipDao().selectMembers( dbSession, UserMembershipQuery.builder() .organizationUuid(organization.getUuid()) .groupId(groupDto.getId()) .membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE); assertThat(members) .extracting(UserMembershipDto::getLogin) .containsOnly(user.getLogin()); }
@Override public void handle(Request request, Response response) throws Exception { int pageSize = request.mandatoryParamAsInt(Param.PAGE_SIZE); int page = request.mandatoryParamAsInt(Param.PAGE); String queryString = request.param(Param.TEXT_QUERY); String selected = request.mandatoryParam(Param.SELECTED); try (DbSession dbSession = dbClient.openSession(false)) { GroupId group = support.findGroup(dbSession, request); userSession.checkPermission(OrganizationPermission.ADMINISTER, group.getOrganizationUuid()); UserMembershipQuery query = UserMembershipQuery.builder() .groupId(group.getId()) .organizationUuid(group.getOrganizationUuid()) .memberSearch(queryString) .membership(getMembership(selected)) .pageIndex(page) .pageSize(pageSize) .build(); int total = dbClient.groupMembershipDao().countMembers(dbSession, query); Paging paging = forPageIndex(page).withPageSize(pageSize).andTotal(total); List<UserMembershipDto> users = dbClient.groupMembershipDao().selectMembers(dbSession, query, paging.offset(), paging.pageSize()); try (JsonWriter json = response.newJsonWriter()) { json.beginObject(); writeMembers(json, users); writePaging(json, paging); json.endObject(); } } }
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); UserGroups.UpdateWsResponse.Builder respBuilder = UserGroups.UpdateWsResponse.newBuilder(); // 'default' is always false as it's not possible to update a default group respBuilder.setGroup(toProtobuf(organization, group, membersCount, false)); writeProtobuf(respBuilder.build(), request, response); }
@Override public void handle(Request request, Response response) throws Exception { int pageSize = request.mandatoryParamAsInt(Param.PAGE_SIZE); int page = request.mandatoryParamAsInt(Param.PAGE); String queryString = request.param(Param.TEXT_QUERY); String selected = request.mandatoryParam(Param.SELECTED); try (DbSession dbSession = dbClient.openSession(false)) { GroupId group = support.findGroup(dbSession, request); userSession.checkPermission(OrganizationPermission.ADMINISTER, group.getOrganizationUuid()); UserMembershipQuery query = UserMembershipQuery.builder() .groupId(group.getId()) .organizationUuid(group.getOrganizationUuid()) .memberSearch(queryString) .membership(getMembership(selected)) .pageIndex(page) .pageSize(pageSize) .build(); int total = dbClient.groupMembershipDao().countMembers(dbSession, query); Paging paging = forPageIndex(page).withPageSize(pageSize).andTotal(total); List<UserMembershipDto> users = dbClient.groupMembershipDao().selectMembers(dbSession, query, paging.offset(), paging.pageSize()); try (JsonWriter json = response.newJsonWriter()) { json.beginObject(); writeMembers(json, users); writePaging(json, paging); json.endObject(); } } }
@Test public void request_creates_owners_group_with_all_permissions_for_new_organization_and_add_current_user_to_it() { UserDto user = db.users().insertUser(); userSession.logIn(user).setSystemAdministrator(); db.qualityGates().insertBuiltInQualityGate(); executeRequest("orgFoo"); DbSession dbSession = db.getSession(); OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, "orgfoo").get(); Optional<GroupDto> groupDtoOptional = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Owners"); assertThat(groupDtoOptional).isNotEmpty(); GroupDto groupDto = groupDtoOptional.get(); assertThat(groupDto.getDescription()).isEqualTo("Owners of organization orgFoo"); assertThat(dbClient.groupPermissionDao().selectGlobalPermissionsOfGroup(dbSession, groupDto.getOrganizationUuid(), groupDto.getId())) .containsOnly(GlobalPermissions.ALL.toArray(new String[GlobalPermissions.ALL.size()])); List<UserMembershipDto> members = dbClient.groupMembershipDao().selectMembers( dbSession, UserMembershipQuery.builder() .organizationUuid(organization.getUuid()) .groupId(groupDto.getId()) .membership(UserMembershipQuery.IN).build(), 0, Integer.MAX_VALUE); assertThat(members) .extracting(UserMembershipDto::getLogin) .containsOnly(user.getLogin()); }
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); UserGroups.UpdateWsResponse.Builder respBuilder = UserGroups.UpdateWsResponse.newBuilder(); // 'default' is always false as it's not possible to update a default group respBuilder.setGroup(toProtobuf(organization, group, membersCount, false)); writeProtobuf(respBuilder.build(), request, response); }
private UserMembershipQuery.Builder newQuery() { return UserMembershipQuery.builder().organizationUuid(organizationDto.getUuid()); } }