private List<UserPermissionDto> findUserPermissions(DbSession dbSession, OrganizationDto org, List<UserDto> users, Optional<ProjectId> project) { if (users.isEmpty()) { return emptyList(); } List<Integer> userIds = users.stream().map(UserDto::getId).collect(Collectors.toList()); PermissionQuery query = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setComponentUuid(project.map(ProjectId::getUuid).orElse(null)) .withAtLeastOnePermission() .build(); return dbClient.userPermissionDao().selectUserPermissionsByQuery(dbSession, query, userIds); } }
@Test public void countGroupsByQuery() { OrganizationDto organizationDto = db.getDefaultOrganization(); GroupDto group1 = db.users().insertGroup(organizationDto, "Group-1"); db.users().insertGroup(organizationDto, "Group-2"); db.users().insertGroup(organizationDto, "Group-3"); db.users().insertPermissionOnAnyone(organizationDto, SCAN); db.users().insertPermissionOnGroup(group1, PROVISION_PROJECTS); assertThat(underTest.countGroupsByQuery(dbSession, newQuery().build())).isEqualTo(4); assertThat(underTest.countGroupsByQuery(dbSession, newQuery().setPermission(PROVISION_PROJECTS.getKey()).build())).isEqualTo(1); assertThat(underTest.countGroupsByQuery(dbSession, newQuery().withAtLeastOnePermission().build())).isEqualTo(2); assertThat(underTest.countGroupsByQuery(dbSession, newQuery().setSearchQuery("Group-").build())).isEqualTo(3); assertThat(underTest.countGroupsByQuery(dbSession, newQuery().setSearchQuery("Any").build())).isEqualTo(1); }
assertThat(countGroupNamesByQueryAndTemplate(builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission(), organization, template)) .isEqualTo(2); assertThat(countGroupNamesByQueryAndTemplate(builder().setOrganizationUuid(organization.getUuid()).setPermission(USER), organization, template)).isEqualTo(1); .isEqualTo(1); assertThat(countGroupNamesByQueryAndTemplate(builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().build(), organization, 123L)) .isZero(); assertThat(countGroupNamesByQueryAndTemplate(builder().setOrganizationUuid(organization.getUuid()).setSearchQuery("unknown"), organization, template))
private static PermissionQuery buildPermissionQuery(Request request, OrganizationDto org, Optional<ProjectId> project) { String textQuery = request.param(Param.TEXT_QUERY); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setPermission(request.param(PARAM_PERMISSION)) .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setSearchQuery(textQuery); if (project.isPresent()) { permissionQuery.setComponentUuid(project.get().getUuid()); } if (textQuery == null) { permissionQuery.withAtLeastOnePermission(); } return permissionQuery.build(); }
private static PermissionQuery buildQuery(Request wsRequest, PermissionTemplateDto template) { String textQuery = wsRequest.param(TEXT_QUERY); String permission = wsRequest.param(PARAM_PERMISSION); PermissionQuery.Builder query = PermissionQuery.builder() .setOrganizationUuid(template.getOrganizationUuid()) .setTemplate(template.getUuid()) .setPermission(permission != null ? validateProjectPermission(permission) : null) .setPageIndex(wsRequest.mandatoryParamAsInt(PAGE)) .setPageSize(wsRequest.mandatoryParamAsInt(PAGE_SIZE)) .setSearchQuery(textQuery); if (textQuery == null) { query.withAtLeastOnePermission(); } return query.build(); }
private List<UserPermissionDto> findUserPermissions(DbSession dbSession, OrganizationDto org, List<UserDto> users, Optional<ProjectId> project) { if (users.isEmpty()) { return emptyList(); } List<Integer> userIds = users.stream().map(UserDto::getId).collect(Collectors.toList()); PermissionQuery query = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setComponentUuid(project.map(ProjectId::getUuid).orElse(null)) .withAtLeastOnePermission() .build(); return dbClient.userPermissionDao().selectUserPermissionsByQuery(dbSession, query, userIds); } }
private static PermissionQuery buildPermissionQuery(Request request, PermissionTemplateDto template) { String textQuery = request.param(TEXT_QUERY); String permission = request.param(PARAM_PERMISSION); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(template.getOrganizationUuid()) .setPermission(permission != null ? validateProjectPermission(permission) : null) .setPageIndex(request.mandatoryParamAsInt(PAGE)) .setPageSize(request.mandatoryParamAsInt(PAGE_SIZE)) .setSearchQuery(textQuery); if (textQuery == null) { permissionQuery.withAtLeastOnePermission(); } return permissionQuery.build(); }
private static PermissionQuery permissionQuery(String permissionKey, OrganizationDto org) { return PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setPermission(permissionKey) .withAtLeastOnePermission() .build(); } }
PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().build(); expectPermissions(query, asList(user2.getId(), user1.getId()), global2, global3, global1); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setSearchQuery("mari").build(); expectPermissions(query, asList(user2.getId(), user1.getId()), global2, global3, global1); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setSearchQuery("ogin2").build(); expectPermissions(query, singletonList(user2.getId()), global2, global3); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setSearchQuery("mail2").build(); expectPermissions(query, singletonList(user2.getId()), global2, global3);
PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setComponentUuid(project1.uuid()).build(); expectPermissions(query, asList(user2.getId(), user1.getId()), perm3, perm2, perm1); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setSearchQuery("Mari").withAtLeastOnePermission().setComponentUuid(project1.uuid()).build(); expectPermissions(query, asList(user2.getId(), user1.getId()), perm3, perm2, perm1); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setComponentUuid("missing").withAtLeastOnePermission().build(); expectPermissions(query, emptyList());
assertThat(selectGroupNamesByQueryAndTemplate(builder().withAtLeastOnePermission(), organization, template)) .containsOnly("Group-1", "Group-2"); assertThat(selectGroupNamesByQueryAndTemplate(builder().setPermission(USER), organization, template)) .containsOnly("Group-2"); assertThat(selectGroupNamesByQueryAndTemplate(builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().build(), organization, 123L)) .isEmpty(); assertThat(selectGroupNamesByQueryAndTemplate(builder().setSearchQuery("unknown"), organization, template))
PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(project1.getOrganizationUuid()).setComponentUuid(project1.uuid()).withAtLeastOnePermission().build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).containsExactly(user2.getId(), user1.getId()); query = PermissionQuery.builder().setOrganizationUuid("anotherOrg").setComponentUuid(project1.uuid()).withAtLeastOnePermission().build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).isEmpty(); query = PermissionQuery.builder().setOrganizationUuid(org1.getUuid()).setComponentUuid("missing").withAtLeastOnePermission().build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).isEmpty();
@Test public void select_logins() { OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, ADMIN); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, CODEVIEWER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); PermissionTemplateDto anotherPermissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(anotherPermissionTemplate, user1, USER); assertThat(underTest.selectUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).build(), permissionTemplate.getId())) .containsExactlyInAnyOrder(user1.getLogin(), user2.getLogin(), user3.getLogin()); assertThat(underTest.selectUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setPermission(USER).build(), permissionTemplate.getId())) .containsExactlyInAnyOrder(user1.getLogin(), user2.getLogin()); }
@Test public void select_groups_by_query_with_project_permissions_on_private_projects() { GroupDto group1 = db.users().insertGroup(); GroupDto group2 = db.users().insertGroup(); GroupDto group3 = db.users().insertGroup(); ComponentDto project = db.components().insertPrivateProject(); ComponentDto anotherProject = db.components().insertPrivateProject(); db.users().insertProjectPermissionOnGroup(group1, SCAN.getKey(), project); db.users().insertProjectPermissionOnGroup(group1, PROVISION_PROJECTS.getKey(), project); db.users().insertProjectPermissionOnGroup(group1, ADMIN, anotherProject); db.users().insertProjectPermissionOnGroup(group3, UserRole.SCAN, anotherProject); db.users().insertPermissionOnGroup(group2, SCAN); PermissionQuery.Builder builderOnComponent = newQuery().setComponentUuid(project.uuid()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission(SCAN_EXECUTION).build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission(USER).build())).isEmpty(); }
@Test public void select_groups_by_query_with_project_permissions_on_public_projects() { GroupDto group1 = db.users().insertGroup(); GroupDto group2 = db.users().insertGroup(); GroupDto group3 = db.users().insertGroup(); ComponentDto project = db.components().insertPublicProject(); ComponentDto anotherProject = db.components().insertPublicProject(); db.users().insertProjectPermissionOnGroup(group1, "p1", project); db.users().insertProjectPermissionOnGroup(group1, "p2", project); db.users().insertProjectPermissionOnAnyone("p3", project); db.users().insertProjectPermissionOnGroup(group1, "p4", anotherProject); db.users().insertProjectPermissionOnAnyone("p4", anotherProject); db.users().insertProjectPermissionOnGroup(group3, "p1", anotherProject); db.users().insertPermissionOnGroup(group2, "p5"); PermissionQuery.Builder builderOnComponent = newQuery().setComponentUuid(project.uuid()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission("p1").build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission("p3").build())).containsOnlyOnce(ANYONE); }
@Test public void search_by_user_name() { OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(u -> u.setName("User1")); UserDto user2 = db.users().insertUser(u -> u.setName("User2")); UserDto user3 = db.users().insertUser(u -> u.setName("User3")); db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); assertThat(underTest.selectUserLoginsByQueryAndTemplate( dbSession, builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setPermission(USER).setSearchQuery("SEr1").build(), permissionTemplate.getId())) .containsExactlyInAnyOrder(user1.getLogin()); assertThat(underTest.selectUserLoginsByQueryAndTemplate( dbSession, builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setPermission(USER).setSearchQuery("user").build(), permissionTemplate.getId())) .containsExactlyInAnyOrder(user1.getLogin(), user2.getLogin()); }
@Test public void select_only_logins_with_permission() { OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, ADMIN); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, CODEVIEWER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); PermissionTemplateDto anotherPermissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(anotherPermissionTemplate, user1, USER); assertThat(underTest.selectUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).setPermission(USER).withAtLeastOnePermission().build(), permissionTemplate.getId())) .containsExactlyInAnyOrder(user1.getLogin(), user2.getLogin()); }
@Test public void count_users() { OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); assertThat(underTest.countUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).build(), permissionTemplate.getId())) .isEqualTo(3); assertThat(underTest.countUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setPermission("user").build(), permissionTemplate.getId())) .isEqualTo(2); }
private static PermissionQuery permissionQuery(String permissionKey, OrganizationDto org) { return PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setPermission(permissionKey) .withAtLeastOnePermission() .build(); } }
@Test public void return_no_logins_on_unknown_template_key() { OrganizationDto organization = db.organizations().insert(); UserDto user = db.users().insertUser(); db.organizations().addMember(organization, user); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user, USER); assertThat(underTest.selectUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).setPermission(USER).withAtLeastOnePermission().build(), 999L)) .isEmpty(); }