private List<String> selectOrganizationsWithNoMoreAdministrators(DbSession dbSession, UserDto user) { Set<String> organizationUuids = dbClient.authorizationDao().selectOrganizationUuidsOfUserWithGlobalPermission( dbSession, user.getId(), OrganizationPermission.ADMINISTER.getKey()); List<String> problematicOrganizations = new ArrayList<>(); for (String organizationUuid : organizationUuids) { int remaining = dbClient.authorizationDao().countUsersWithGlobalPermissionExcludingUser(dbSession, organizationUuid, OrganizationPermission.ADMINISTER.getKey(), user.getId()); if (remaining == 0) { problematicOrganizations.add(organizationUuid); } } return problematicOrganizations; }
@Test public void selectOrganizationUuidsOfUserWithGlobalPermission_returns_empty_set_if_user_does_not_exist() { // another user db.users().insertPermissionOnUser(user, ADMINISTER_QUALITY_GATES); Set<String> orgUuids = underTest.selectOrganizationUuidsOfUserWithGlobalPermission(dbSession, MISSING_ID, SYSTEM_ADMIN); assertThat(orgUuids).isEmpty(); }
@Test public void selectOrganizationUuidsOfUserWithGlobalPermission_returns_empty_set_if_user_does_not_have_permission_at_all() { db.users().insertPermissionOnUser(user, ADMINISTER_QUALITY_GATES); // user is not part of this group db.users().insertPermissionOnGroup(group1, SCAN); Set<String> orgUuids = underTest.selectOrganizationUuidsOfUserWithGlobalPermission(dbSession, user.getId(), SCAN.getKey()); assertThat(orgUuids).isEmpty(); }
@Test public void selectOrganizationUuidsOfUserWithGlobalPermission_ignores_anonymous_permissions() { db.users().insertPermissionOnAnyone(organization, SCAN); db.users().insertPermissionOnUser(organization, user, ADMINISTER_QUALITY_GATES); Set<String> orgUuids = underTest.selectOrganizationUuidsOfUserWithGlobalPermission(dbSession, user.getId(), SCAN.getKey()); assertThat(orgUuids).isEmpty(); }
@Test public void selectOrganizationUuidsOfUserWithGlobalPermission_returns_organizations_on_which_user_has_permission() { db.users().insertPermissionOnGroup(group1, SCAN); db.users().insertPermissionOnGroup(group2, QUALITY_GATE_ADMIN); db.users().insertMember(group1, user); db.users().insertMember(group2, user); Set<String> orgUuids = underTest.selectOrganizationUuidsOfUserWithGlobalPermission(dbSession, user.getId(), SCAN.getKey()); assertThat(orgUuids).containsExactly(group1.getOrganizationUuid()); }
@Test public void selectOrganizationUuidsOfUserWithGlobalPermission_handles_user_permissions_and_group_permissions() { // organization: through group membership db.users().insertPermissionOnGroup(group1, SCAN); db.users().insertMember(group1, user); // org2 : direct user permission OrganizationDto org2 = db.organizations().insert(); db.users().insertPermissionOnUser(org2, user, SCAN); // org3 : another permission QUALITY_GATE_ADMIN OrganizationDto org3 = db.organizations().insert(); db.users().insertPermissionOnUser(org3, user, QUALITY_GATE_ADMIN); // exclude project permission db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, db.components().insertPrivateProject()); Set<String> orgUuids = underTest.selectOrganizationUuidsOfUserWithGlobalPermission(dbSession, user.getId(), SCAN.getKey()); assertThat(orgUuids).containsOnly(organization.getUuid(), org2.getUuid()); }
private List<String> selectOrganizationsWithNoMoreAdministrators(DbSession dbSession, UserDto user) { Set<String> organizationUuids = dbClient.authorizationDao().selectOrganizationUuidsOfUserWithGlobalPermission( dbSession, user.getId(), OrganizationPermission.ADMINISTER.getKey()); List<String> problematicOrganizations = new ArrayList<>(); for (String organizationUuid : organizationUuids) { int remaining = dbClient.authorizationDao().countUsersWithGlobalPermissionExcludingUser(dbSession, organizationUuid, OrganizationPermission.ADMINISTER.getKey(), user.getId()); if (remaining == 0) { problematicOrganizations.add(organizationUuid); } } return problematicOrganizations; }