Skip to content

Commit

Permalink
SONAR-8997 SONAR-8998 Filter organization members when selecting user…
Browse files Browse the repository at this point in the history
…s to change permissions and template permissions
  • Loading branch information
teryk authored and julienlancelot committed Mar 27, 2017
1 parent 0e47393 commit ed1aa9d
Show file tree
Hide file tree
Showing 40 changed files with 349 additions and 336 deletions.
Expand Up @@ -44,16 +44,16 @@ public class GroupPermissionDao implements Dao {
* The virtual group "Anyone" may be returned as the value {@link DefaultGroups#ANYONE}. * The virtual group "Anyone" may be returned as the value {@link DefaultGroups#ANYONE}.
* @return group names, sorted in alphabetical order * @return group names, sorted in alphabetical order
*/ */
public List<String> selectGroupNamesByQuery(DbSession dbSession, String organizationUuid, PermissionQuery query) { public List<String> selectGroupNamesByQuery(DbSession dbSession, PermissionQuery query) {
return mapper(dbSession).selectGroupNamesByQuery(organizationUuid, query, new RowBounds(query.getPageOffset(), query.getPageSize())); return mapper(dbSession).selectGroupNamesByQuery(query, new RowBounds(query.getPageOffset(), query.getPageSize()));
} }


/** /**
* Count the number of groups returned by {@link #selectGroupNamesByQuery(DbSession, String, PermissionQuery)}, * Count the number of groups returned by {@link #selectGroupNamesByQuery(DbSession, PermissionQuery)},
* without applying pagination. * without applying pagination.
*/ */
public int countGroupsByQuery(DbSession dbSession, String organizationUuid, PermissionQuery query) { public int countGroupsByQuery(DbSession dbSession, PermissionQuery query) {
return mapper(dbSession).countGroupsByQuery(organizationUuid, query); return mapper(dbSession).countGroupsByQuery(query);
} }


/** /**
Expand Down
Expand Up @@ -28,10 +28,9 @@


public interface GroupPermissionMapper { public interface GroupPermissionMapper {


List<String> selectGroupNamesByQuery(@Param("organizationUuid") String organizationUuid, List<String> selectGroupNamesByQuery(@Param("query") PermissionQuery query, RowBounds rowBounds);
@Param("query") PermissionQuery query, RowBounds rowBounds);


int countGroupsByQuery(@Param("organizationUuid") String organizationUuid, @Param("query") PermissionQuery query); int countGroupsByQuery(@Param("query") PermissionQuery query);


List<GroupPermissionDto> selectByGroupIds(@Param("organizationUuid") String organizationUuid, List<GroupPermissionDto> selectByGroupIds(@Param("organizationUuid") String organizationUuid,
@Param("groupIds") List<Integer> groupIds, @Nullable @Param("projectId") Long projectId); @Param("groupIds") List<Integer> groupIds, @Nullable @Param("projectId") Long projectId);
Expand Down
Expand Up @@ -27,6 +27,7 @@


import static com.google.common.base.MoreObjects.firstNonNull; import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
import static org.apache.commons.lang.StringUtils.defaultIfBlank; import static org.apache.commons.lang.StringUtils.defaultIfBlank;
import static org.sonar.api.utils.Paging.offset; import static org.sonar.api.utils.Paging.offset;
import static org.sonar.db.DaoDatabaseUtils.buildLikeValue; import static org.sonar.db.DaoDatabaseUtils.buildLikeValue;
Expand All @@ -41,9 +42,11 @@ public class PermissionQuery {
public static final int DEFAULT_PAGE_SIZE = 20; public static final int DEFAULT_PAGE_SIZE = 20;
public static final int DEFAULT_PAGE_INDEX = 1; public static final int DEFAULT_PAGE_INDEX = 1;


// filter: return only the users or groups that are members of the organization
private final String organizationUuid;
// filter: return only the users or groups who have this permission // filter: return only the users or groups who have this permission
private final String permission; private final String permission;
// filter on project, else filter global permissions // filter on project, else filter org permissions
private final String componentUuid; private final String componentUuid;
private final String template; private final String template;


Expand All @@ -60,6 +63,7 @@ public class PermissionQuery {
private final int pageOffset; private final int pageOffset;


private PermissionQuery(Builder builder) { private PermissionQuery(Builder builder) {
this.organizationUuid = builder.organizationUuid;
this.permission = builder.permission; this.permission = builder.permission;
this.withAtLeastOnePermission = builder.withAtLeastOnePermission; this.withAtLeastOnePermission = builder.withAtLeastOnePermission;
this.componentUuid = builder.componentUuid; this.componentUuid = builder.componentUuid;
Expand All @@ -71,6 +75,10 @@ private PermissionQuery(Builder builder) {
this.pageOffset = offset(builder.pageIndex, builder.pageSize); this.pageOffset = offset(builder.pageIndex, builder.pageSize);
} }


public String getOrganizationUuid() {
return organizationUuid;
}

@CheckForNull @CheckForNull
public String getPermission() { public String getPermission() {
return permission; return permission;
Expand Down Expand Up @@ -120,6 +128,7 @@ public static Builder builder() {


public static class Builder { public static class Builder {
private String permission; private String permission;
private String organizationUuid;
private String componentUuid; private String componentUuid;
private String template; private String template;
private String searchQuery; private String searchQuery;
Expand Down Expand Up @@ -148,6 +157,11 @@ public Builder setComponentUuid(@Nullable String componentUuid) {
return this; return this;
} }


public Builder setOrganizationUuid(String organizationUuid) {
this.organizationUuid = organizationUuid;
return this;
}

public Builder setSearchQuery(@Nullable String s) { public Builder setSearchQuery(@Nullable String s) {
this.searchQuery = defaultIfBlank(s, null); this.searchQuery = defaultIfBlank(s, null);
return this; return this;
Expand All @@ -169,6 +183,7 @@ public Builder withAtLeastOnePermission() {
} }


public PermissionQuery build() { public PermissionQuery build() {
this.organizationUuid = requireNonNull(organizationUuid, "Organization UUID cannot be null");
this.pageIndex = firstNonNull(pageIndex, DEFAULT_PAGE_INDEX); this.pageIndex = firstNonNull(pageIndex, DEFAULT_PAGE_INDEX);
this.pageSize = firstNonNull(pageSize, DEFAULT_PAGE_SIZE); this.pageSize = firstNonNull(pageSize, DEFAULT_PAGE_SIZE);
checkArgument(searchQuery == null || searchQuery.length() >= SEARCH_QUERY_MIN_LENGTH, "Search query should contains at least %s characters", SEARCH_QUERY_MIN_LENGTH); checkArgument(searchQuery == null || searchQuery.length() >= SEARCH_QUERY_MIN_LENGTH, "Search query should contains at least %s characters", SEARCH_QUERY_MIN_LENGTH);
Expand Down
Expand Up @@ -37,12 +37,11 @@ public class UserPermissionDao implements Dao {


/** /**
* List of user permissions ordered by alphabetical order of user names * List of user permissions ordered by alphabetical order of user names
* * @param query non-null query including optional filters.
* @param query non-null query including optional filters.
* @param userLogins if null, then filter on all active users. If not null, then filter on logins, including disabled users. * @param userLogins if null, then filter on all active users. If not null, then filter on logins, including disabled users.
* Must not be empty. If not null then maximum size is {@link org.sonar.db.DatabaseUtils#PARTITION_SIZE_FOR_ORACLE}. * Must not be empty. If not null then maximum size is {@link DatabaseUtils#PARTITION_SIZE_FOR_ORACLE}.
*/ */
public List<UserPermissionDto> select(DbSession dbSession, String organizationUuid, PermissionQuery query, @Nullable Collection<String> userLogins) { public List<UserPermissionDto> select(DbSession dbSession, PermissionQuery query, @Nullable Collection<String> userLogins) {
if (userLogins != null) { if (userLogins != null) {
if (userLogins.isEmpty()) { if (userLogins.isEmpty()) {
return emptyList(); return emptyList();
Expand All @@ -51,15 +50,15 @@ public List<UserPermissionDto> select(DbSession dbSession, String organizationUu
} }


RowBounds rowBounds = new RowBounds(query.getPageOffset(), query.getPageSize()); RowBounds rowBounds = new RowBounds(query.getPageOffset(), query.getPageSize());
return mapper(dbSession).selectByQuery(organizationUuid, query, userLogins, rowBounds); return mapper(dbSession).selectByQuery(query, userLogins, rowBounds);
} }


/** /**
* Shortcut over {@link #select(DbSession, String, PermissionQuery, Collection)} to return only distinct user * Shortcut over {@link #select(DbSession, PermissionQuery, Collection)} to return only distinct user
* ids, keeping the same order. * ids, keeping the same order.
*/ */
public List<Integer> selectUserIds(DbSession dbSession, String organizationUuid, PermissionQuery query) { public List<Integer> selectUserIds(DbSession dbSession, PermissionQuery query) {
List<UserPermissionDto> dtos = select(dbSession, organizationUuid, query, null); List<UserPermissionDto> dtos = select(dbSession, query, null);
return dtos.stream() return dtos.stream()
.map(UserPermissionDto::getUserId) .map(UserPermissionDto::getUserId)
.distinct() .distinct()
Expand Down
Expand Up @@ -27,15 +27,14 @@


public interface UserPermissionMapper { public interface UserPermissionMapper {


List<UserPermissionDto> selectByQuery(@Param("organizationUuid") String organizationUuid, List<UserPermissionDto> selectByQuery(@Param("query") PermissionQuery query, @Nullable @Param("userLogins") Collection<String> userLogins, RowBounds rowBounds);
@Param("query") PermissionQuery query, @Nullable @Param("userLogins") Collection<String> userLogins, RowBounds rowBounds);


/** /**
* Count the number of distinct users returned by {@link #selectByQuery(String, PermissionQuery, Collection, RowBounds)} * Count the number of distinct users returned by {@link #selectByQuery(PermissionQuery, Collection, RowBounds)}
* {@link PermissionQuery#getPageOffset()} and {@link PermissionQuery#getPageSize()} are ignored. * {@link PermissionQuery#getPageOffset()} and {@link PermissionQuery#getPageSize()} are ignored.
* *
* @param useNull must always be null. It is needed for using the sql of * @param useNull must always be null. It is needed for using the sql of
* {@link #selectByQuery(String, PermissionQuery, Collection, RowBounds)} * {@link #selectByQuery(PermissionQuery, Collection, RowBounds)}
*/ */
int countUsersByQuery(@Param("organizationUuid") String organizationUuid, @Param("query") PermissionQuery query, int countUsersByQuery(@Param("organizationUuid") String organizationUuid, @Param("query") PermissionQuery query,
@Nullable @Param("userLogins") Collection<String> useNull); @Nullable @Param("userLogins") Collection<String> useNull);
Expand Down
Expand Up @@ -69,8 +69,8 @@ public List<PermissionTemplateUserDto> selectUserPermissionsByTemplateId(DbSessi
return mapper(dbSession).selectUserPermissionsByTemplateIdAndUserLogins(templateId, Collections.emptyList()); return mapper(dbSession).selectUserPermissionsByTemplateIdAndUserLogins(templateId, Collections.emptyList());
} }


public List<String> selectGroupNamesByQueryAndTemplate(DbSession session, PermissionQuery query, String organizationUuid, long templateId) { public List<String> selectGroupNamesByQueryAndTemplate(DbSession session, PermissionQuery query, long templateId) {
return mapper(session).selectGroupNamesByQueryAndTemplate(organizationUuid, templateId, query, new RowBounds(query.getPageOffset(), query.getPageSize())); return mapper(session).selectGroupNamesByQueryAndTemplate(templateId, query, new RowBounds(query.getPageOffset(), query.getPageSize()));
} }


public int countGroupNamesByQueryAndTemplate(DbSession session, PermissionQuery query, String organizationUuid, long templateId) { public int countGroupNamesByQueryAndTemplate(DbSession session, PermissionQuery query, String organizationUuid, long templateId) {
Expand Down
Expand Up @@ -72,8 +72,7 @@ public interface PermissionTemplateMapper {


int countUserLoginsByQueryAndTemplate(@Param("query") PermissionQuery query, @Param("templateId") long templateId); int countUserLoginsByQueryAndTemplate(@Param("query") PermissionQuery query, @Param("templateId") long templateId);


List<String> selectGroupNamesByQueryAndTemplate(@Param("organizationUuid") String organizationUuid, List<String> selectGroupNamesByQueryAndTemplate(@Param("templateId") long templateId, @Param("query") PermissionQuery query, RowBounds rowBounds);
@Param("templateId") long templateId, @Param("query") PermissionQuery query, RowBounds rowBounds);


int countGroupNamesByQueryAndTemplate(@Param("organizationUuid") String organizationUuid, @Param("query") PermissionQuery query, @Param("templateId") long templateId); int countGroupNamesByQueryAndTemplate(@Param("organizationUuid") String organizationUuid, @Param("query") PermissionQuery query, @Param("templateId") long templateId);


Expand Down
Expand Up @@ -43,15 +43,15 @@
from groups g from groups g
left join group_roles gr on g.id = gr.group_id left join group_roles gr on g.id = gr.group_id
where where
g.organization_uuid = #{organizationUuid,jdbcType=VARCHAR} g.organization_uuid = #{query.organizationUuid,jdbcType=VARCHAR}


union all union all


select 0 as groupId, 'Anyone' as name, gr.role as permission, gr.resource_id as componentId, gr.id as id select 0 as groupId, 'Anyone' as name, gr.role as permission, gr.resource_id as componentId, gr.id as id
from group_roles gr from group_roles gr
<if test="query.withAtLeastOnePermission()"> <if test="query.withAtLeastOnePermission()">
where where
gr.organization_uuid = #{organizationUuid,jdbcType=VARCHAR} and gr.organization_uuid = #{query.organizationUuid,jdbcType=VARCHAR} and
gr.group_id is null gr.group_id is null
</if> </if>


Expand Down
Expand Up @@ -22,6 +22,7 @@
from users u from users u
left join user_roles ur on ur.user_id = u.id left join user_roles ur on ur.user_id = u.id
left join projects p on ur.resource_id = p.id left join projects p on ur.resource_id = p.id
inner join organization_members om on u.id=om.user_id and om.organization_uuid=#{query.organizationUuid,jdbcType=VARCHAR}
<where> <where>
<if test="userLogins == null"> <if test="userLogins == null">
and u.active = ${_true} and u.active = ${_true}
Expand All @@ -38,7 +39,7 @@
</if> </if>
<!-- filter rows with user permissions --> <!-- filter rows with user permissions -->
<if test="query.withAtLeastOnePermission()"> <if test="query.withAtLeastOnePermission()">
and ur.organization_uuid = #{organizationUuid,jdbcType=VARCHAR} and ur.organization_uuid = #{query.organizationUuid,jdbcType=VARCHAR}
and ur.role is not null and ur.role is not null
<if test="query.componentUuid==null"> <if test="query.componentUuid==null">
and ur.resource_id is null and ur.resource_id is null
Expand Down
Expand Up @@ -135,6 +135,7 @@
<sql id="userLoginsByQueryAndTemplate"> <sql id="userLoginsByQueryAndTemplate">
FROM users u FROM users u
LEFT JOIN perm_templates_users ptu ON ptu.user_id=u.id AND ptu.template_id=#{templateId} LEFT JOIN perm_templates_users ptu ON ptu.user_id=u.id AND ptu.template_id=#{templateId}
INNER JOIN organization_members om ON u.id=om.user_id AND om.organization_uuid=#{query.organizationUuid}
<where> <where>
u.active = ${_true} u.active = ${_true}
<if test="query.getSearchQueryToSql() != null"> <if test="query.getSearchQueryToSql() != null">
Expand Down Expand Up @@ -173,7 +174,7 @@
LEFT JOIN perm_templates_groups ptg ON LEFT JOIN perm_templates_groups ptg ON
ptg.group_id=g.id ptg.group_id=g.id
where where
g.organization_uuid=#{organizationUuid,jdbcType=VARCHAR} g.organization_uuid=#{query.organizationUuid,jdbcType=VARCHAR}
UNION ALL UNION ALL
SELECT SELECT
0 AS group_id, 0 AS group_id,
Expand Down
4 changes: 4 additions & 0 deletions server/sonar-db-dao/src/test/java/org/sonar/db/DbTester.java
Expand Up @@ -158,6 +158,10 @@ private void insertDefaultOrganization() {
} }
} }


public boolean hasDefaultOrganization() {
return defaultOrganization != null;
}

public OrganizationDto getDefaultOrganization() { public OrganizationDto getDefaultOrganization() {
checkState(defaultOrganization != null, "Default organization has not been created"); checkState(defaultOrganization != null, "Default organization has not been created");
return defaultOrganization; return defaultOrganization;
Expand Down
Expand Up @@ -103,7 +103,7 @@ public void selectGroupNamesByQuery_is_ordered_by_group_names() {
GroupDto group1 = db.users().insertGroup(organizationDto, "Group-1"); GroupDto group1 = db.users().insertGroup(organizationDto, "Group-1");
db.users().insertPermissionOnAnyone(organizationDto, SCAN); db.users().insertPermissionOnAnyone(organizationDto, SCAN);


assertThat(underTest.selectGroupNamesByQuery(dbSession, organizationDto.getUuid(), PermissionQuery.builder().build())) assertThat(underTest.selectGroupNamesByQuery(dbSession, newQuery().setOrganizationUuid(organizationDto.getUuid()).build()))
.containsExactly(ANYONE, group1.getName(), group2.getName(), group3.getName()); .containsExactly(ANYONE, group1.getName(), group2.getName(), group3.getName());
} }


Expand All @@ -117,15 +117,15 @@ public void countGroupsByQuery() {
db.users().insertPermissionOnGroup(group1, PROVISION_PROJECTS); db.users().insertPermissionOnGroup(group1, PROVISION_PROJECTS);


assertThat(underTest.countGroupsByQuery(dbSession, assertThat(underTest.countGroupsByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().build())).isEqualTo(4); newQuery().build())).isEqualTo(4);
assertThat(underTest.countGroupsByQuery(dbSession, assertThat(underTest.countGroupsByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().setPermission(PROVISION_PROJECTS.getKey()).build())).isEqualTo(1); newQuery().setPermission(PROVISION_PROJECTS.getKey()).build())).isEqualTo(1);
assertThat(underTest.countGroupsByQuery(dbSession, assertThat(underTest.countGroupsByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().withAtLeastOnePermission().build())).isEqualTo(2); newQuery().withAtLeastOnePermission().build())).isEqualTo(2);
assertThat(underTest.countGroupsByQuery(dbSession, assertThat(underTest.countGroupsByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().setSearchQuery("Group-").build())).isEqualTo(3); newQuery().setSearchQuery("Group-").build())).isEqualTo(3);
assertThat(underTest.countGroupsByQuery(dbSession, assertThat(underTest.countGroupsByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().setSearchQuery("Any").build())).isEqualTo(1); newQuery().setSearchQuery("Any").build())).isEqualTo(1);
} }


@Test @Test
Expand All @@ -144,13 +144,13 @@ public void selectGroupNamesByQuery_with_global_permission() {
db.users().insertProjectPermissionOnGroup(group2, UserRole.ADMIN, project); db.users().insertProjectPermissionOnGroup(group2, UserRole.ADMIN, project);


assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
organizationDto.getUuid(), PermissionQuery.builder().setPermission(SCAN.getKey()).build())).containsExactly(ANYONE, group1.getName()); newQuery().setOrganizationUuid(organizationDto.getUuid()).setPermission(SCAN.getKey()).build())).containsExactly(ANYONE, group1.getName());


assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
organizationDto.getUuid(), PermissionQuery.builder().setPermission(ADMINISTER.getKey()).build())).containsExactly(group3.getName()); newQuery().setOrganizationUuid(organizationDto.getUuid()).setPermission(ADMINISTER.getKey()).build())).containsExactly(group3.getName());


assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
organizationDto.getUuid(), PermissionQuery.builder().setPermission(PROVISION_PROJECTS.getKey()).build())).containsExactly(ANYONE); newQuery().setOrganizationUuid(organizationDto.getUuid()).setPermission(PROVISION_PROJECTS.getKey()).build())).containsExactly(ANYONE);
} }


@Test @Test
Expand All @@ -171,21 +171,21 @@ public void select_groups_by_query_with_project_permissions() {
db.users().insertProjectPermissionOnGroup(group3, SCAN_EXECUTION, anotherProject); db.users().insertProjectPermissionOnGroup(group3, SCAN_EXECUTION, anotherProject);
db.users().insertPermissionOnGroup(group2, SCAN); db.users().insertPermissionOnGroup(group2, SCAN);


PermissionQuery.Builder builderOnComponent = PermissionQuery.builder().setComponentUuid(project.uuid()); PermissionQuery.Builder builderOnComponent = newQuery().setComponentUuid(project.uuid());
assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
defaultOrganizationUuid, builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName()); builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName());
assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
defaultOrganizationUuid, builderOnComponent.setPermission(SCAN_EXECUTION).build())).containsOnlyOnce(group1.getName()); builderOnComponent.setPermission(SCAN_EXECUTION).build())).containsOnlyOnce(group1.getName());
assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
defaultOrganizationUuid, builderOnComponent.setPermission(USER).build())).containsOnlyOnce(ANYONE); builderOnComponent.setPermission(USER).build())).containsOnlyOnce(ANYONE);
} }


@Test @Test
public void selectGroupNamesByQuery_is_paginated() { public void selectGroupNamesByQuery_is_paginated() {
IntStream.rangeClosed(0, 9).forEach(i -> db.users().insertGroup(db.getDefaultOrganization(), i + "-name")); IntStream.rangeClosed(0, 9).forEach(i -> db.users().insertGroup(db.getDefaultOrganization(), i + "-name"));


List<String> groupNames = underTest.selectGroupNamesByQuery(dbSession, List<String> groupNames = underTest.selectGroupNamesByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().setPageIndex(2).setPageSize(3).build()); newQuery().setPageIndex(2).setPageSize(3).build());
assertThat(groupNames).containsExactly("3-name", "4-name", "5-name"); assertThat(groupNames).containsExactly("3-name", "4-name", "5-name");
} }


Expand All @@ -196,15 +196,15 @@ public void selectGroupNamesByQuery_with_search_query() {
db.users().insertPermissionOnGroup(group, SCAN); db.users().insertPermissionOnGroup(group, SCAN);


assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().setSearchQuery("any").build())).containsOnlyOnce(ANYONE, group.getName()); newQuery().setSearchQuery("any").build())).containsOnlyOnce(ANYONE, group.getName());
} }


@Test @Test
public void selectGroupNamesByQuery_does_not_return_anyone_when_group_roles_is_empty() { public void selectGroupNamesByQuery_does_not_return_anyone_when_group_roles_is_empty() {
GroupDto group = db.users().insertGroup(); GroupDto group = db.users().insertGroup();


assertThat(underTest.selectGroupNamesByQuery(dbSession, assertThat(underTest.selectGroupNamesByQuery(dbSession,
defaultOrganizationUuid, PermissionQuery.builder().build())) newQuery().build()))
.doesNotContain(ANYONE) .doesNotContain(ANYONE)
.containsExactly(group.getName()); .containsExactly(group.getName());
} }
Expand Down Expand Up @@ -461,6 +461,10 @@ public void deleteByOrganization_deletes_all_groups_of_organization() {
verifyOrganizationUuidsInTable(); verifyOrganizationUuidsInTable();
} }


private PermissionQuery.Builder newQuery() {
return PermissionQuery.builder().setOrganizationUuid(db.getDefaultOrganization().getUuid());
}

private void verifyOrganizationUuidsInTable(String... organizationUuids) { private void verifyOrganizationUuidsInTable(String... organizationUuids) {
assertThat(db.select("select distinct organization_uuid as \"organizationUuid\" from group_roles")) assertThat(db.select("select distinct organization_uuid as \"organizationUuid\" from group_roles"))
.extracting((row) -> (String) row.get("organizationUuid")) .extracting((row) -> (String) row.get("organizationUuid"))
Expand Down

0 comments on commit ed1aa9d

Please sign in to comment.