]> source.dussan.org Git - sonarqube.git/commitdiff
Rename misleading PermissionQuery.withPermissionOnly() by withAtLeastOnePermission()
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 27 Sep 2016 14:36:22 +0000 (16:36 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 28 Sep 2016 14:32:38 +0000 (16:32 +0200)
13 files changed:
server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchGlobalPermissionsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/TemplateGroupsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/TemplateUsersAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
sonar-db/src/main/java/org/sonar/db/permission/PermissionQuery.java
sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml
sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml
sonar-db/src/test/java/org/sonar/db/permission/GroupWithPermissionDaoTest.java
sonar-db/src/test/java/org/sonar/db/permission/UserWithPermissionDaoTest.java
sonar-db/src/test/java/org/sonar/db/permission/template/GroupWithPermissionTemplateDaoTest.java
sonar-db/src/test/java/org/sonar/db/permission/template/UserWithPermissionTemplateDaoTest.java

index f777d87dbd47d14cc2315e8c47ce6ab1bb4676cf..96cbf138723496a9b2931fca1223667adebc6b21 100644 (file)
@@ -135,7 +135,7 @@ public class GroupsAction implements PermissionsWsAction {
       permissionQuery.setComponentUuid(project.get().uuid());
     }
     if (request.getQuery() == null) {
-      permissionQuery.withPermissionOnly();
+      permissionQuery.withAtLeastOnePermission();
     }
     return permissionQuery.build();
   }
index 077bfb5fda4ba5b7922fe420ce0ce1a0b003252a..963d7bcc02ddfcc881abd090666129c8b9b19c13 100644 (file)
@@ -113,7 +113,7 @@ public class SearchGlobalPermissionsAction implements PermissionsWsAction {
   private static PermissionQuery permissionQuery(String permissionKey) {
     return PermissionQuery.builder()
       .setPermission(permissionKey)
-      .withPermissionOnly()
+      .withAtLeastOnePermission()
       .build();
   }
 }
index db72eaf405d1d3f8a18f6d7a4a0cdd1a90632116..0c116d93a4cd980d534855d1b10ad83a6c330c3c 100644 (file)
@@ -112,7 +112,7 @@ public class TemplateGroupsAction implements PermissionsWsAction {
       .setPageSize(request.mandatoryParamAsInt(PAGE_SIZE))
       .setSearchQuery(textQuery);
     if (textQuery == null) {
-      permissionQuery.withPermissionOnly();
+      permissionQuery.withAtLeastOnePermission();
     }
     return permissionQuery.build();
   }
index 71cd78f9c2c6c0e24f823b4848ac6c5776651382..db6f915d2beb4305dafa168d11cfd2d8b47e5889 100644 (file)
@@ -116,7 +116,7 @@ public class TemplateUsersAction implements PermissionsWsAction {
       .setPageSize(wsRequest.mandatoryParamAsInt(PAGE_SIZE))
       .setSearchQuery(textQuery);
     if (textQuery == null) {
-      query.withPermissionOnly();
+      query.withAtLeastOnePermission();
     }
     return query.build();
   }
index ae90264ab201f55a72cf2a56aabe1fecdd912add..2d3fc7f8744a631f058600477e415e90c2f197b0 100644 (file)
@@ -165,7 +165,7 @@ public class UsersAction implements PermissionsWsAction {
       dbQuery.setComponentUuid(project.get().uuid());
     }
     if (request.getQuery() == null) {
-      dbQuery.withPermissionOnly();
+      dbQuery.withAtLeastOnePermission();
     }
 
     return dbQuery.build();
index 2f6b2707b141239e34e28101c722d9dd690d3d54..1c8baf792d8dce78c3da995a6f187e3b76f077c4 100644 (file)
@@ -104,7 +104,7 @@ public class DeleteAction implements UserGroupsWsAction {
       .contains(GlobalPermissions.SYSTEM_ADMIN);
     boolean isOneRemainingAdminGroup = dbClient.permissionDao().countGroups(dbSession, GlobalPermissions.SYSTEM_ADMIN, null) == 1;
     boolean hasNoStandaloneAdminUser = dbClient.permissionDao().countUsersByQuery(dbSession,
-      PermissionQuery.builder().setPermission(GlobalPermissions.SYSTEM_ADMIN).withPermissionOnly().build()) == 0;
+      PermissionQuery.builder().setPermission(GlobalPermissions.SYSTEM_ADMIN).withAtLeastOnePermission().build()) == 0;
     boolean isLastAdminGroup = hasAdminPermission && isOneRemainingAdminGroup && hasNoStandaloneAdminUser;
 
     checkArgument(!isLastAdminGroup, "The last system admin group '%s' cannot be deleted", groupName);
index 8ac55f7cd50b980f113aabeba3b411033c65ad75..67768efeb3c5b20f021fe0efe7ac485bea361072 100644 (file)
@@ -41,19 +41,26 @@ public class PermissionQuery {
   public static final int DEFAULT_PAGE_SIZE = 20;
   public static final int DEFAULT_PAGE_INDEX = 1;
 
+  // filter: return only the users or groups who have this permission
   private final String permission;
+  // filter on project, else filter global permissions
   private final String componentUuid;
   private final String template;
+
+  // filter on name of users or groups
   private final String searchQuery;
   private final String searchQueryToSql;
-  private final boolean withPermissionOnly;
+
+  // filter users or groups that have at least one permission. It does make
+  // sense when the filter "permission" is set.
+  private final boolean withAtLeastOnePermission;
 
   private final int pageSize;
   private final int pageOffset;
 
   private PermissionQuery(Builder builder) {
     this.permission = builder.permission;
-    this.withPermissionOnly = builder.withPermissionOnly;
+    this.withAtLeastOnePermission = builder.withAtLeastOnePermission;
     this.componentUuid = builder.componentUuid;
     this.template = builder.template;
     this.searchQuery = builder.searchQuery;
@@ -67,8 +74,8 @@ public class PermissionQuery {
     return permission;
   }
 
-  public boolean withPermissionOnly() {
-    return withPermissionOnly;
+  public boolean withAtLeastOnePermission() {
+    return withAtLeastOnePermission;
   }
 
   // TODO remove it, it should not be in the query, but set as a separate parameter
@@ -109,7 +116,7 @@ public class PermissionQuery {
     private String componentUuid;
     private String template;
     private String searchQuery;
-    private boolean withPermissionOnly;
+    private boolean withAtLeastOnePermission;
 
     private Integer pageIndex = DEFAULT_PAGE_INDEX;
     private Integer pageSize = DEFAULT_PAGE_SIZE;
@@ -119,7 +126,7 @@ public class PermissionQuery {
     }
 
     public Builder setPermission(@Nullable String permission) {
-      this.withPermissionOnly = permission != null;
+      this.withAtLeastOnePermission = permission != null;
       this.permission = permission;
       return this;
     }
@@ -149,8 +156,8 @@ public class PermissionQuery {
       return this;
     }
 
-    public Builder withPermissionOnly() {
-      this.withPermissionOnly = true;
+    public Builder withAtLeastOnePermission() {
+      this.withAtLeastOnePermission = true;
       return this;
     }
 
index b820e9dfdf2f1d399798e15d83a0cc1f6460d13e..708c2967047b67874f0a35afdd43c92a9480917b 100644 (file)
     from users u
       left join user_roles ur ON ur.user_id=u.id
         left join projects p on ur.resource_id = p.id
-    <where>
-      and u.active = ${_true}
+    where
+      u.active = ${_true}
       <if test="query.searchQueryToSql != null">
         and lower(u.name) like #{query.searchQueryToSql} ESCAPE '/'
       </if>
       <!-- filter rows with user permissions -->
-      <if test="query.withPermissionOnly()">
+      <if test="query.withAtLeastOnePermission()">
         and ur.role is not null
         <if test="query.componentUuid==null">
           and ur.resource_id is null
@@ -72,7 +72,6 @@
           and ur.role=#{query.permission}
         </if>
       </if>
-    </where>
   </sql>
 
   <select id="selectUserPermissionsByLogins" parameterType="map" resultType="UserRole">
     select 0 as group_id, 'Anyone' as name, gr.role as permission, gr.resource_id as resource_id, gr.id as id
     from group_roles gr
     <where>
-      <if test="query.withPermissionOnly()">
+      <if test="query.withAtLeastOnePermission()">
         and gr.group_id is null
       </if>
     </where>
         and lower(gr.name) like #{query.searchQueryToSql} ESCAPE '/'
       </if>
       <!-- filter rows with group permissions -->
-      <if test="query.withPermissionOnly()">
+      <if test="query.withAtLeastOnePermission()">
         and gr.permission is not null
         <if test="query.componentUuid==null">
           and gr.resource_id is null
index 2f267a21f6912998615588932cfcf92bb4b75125..224c7f453e80c7c140a24bfabfb2a8e131e87578 100644 (file)
@@ -89,7 +89,7 @@
       <if test="query.getSearchQueryToSql() != null">
         AND lower(u.name) like #{query.searchQueryToSql} ESCAPE '/'
       </if>
-      <if test="query.withPermissionOnly()">
+      <if test="query.withAtLeastOnePermission()">
         and ptu.permission_reference is not null
         <if test="query.getPermission()!=null">
           and ptu.permission_reference=#{query.permission}
     SELECT 0 AS group_id, 'Anyone' AS name, ptg.permission_reference AS permission, ptg.template_id AS templateId
     FROM perm_templates_groups ptg
     <where>
-      <if test="query.withPermissionOnly()">
+      <if test="query.withAtLeastOnePermission()">
         AND ptg.group_id IS NULL
       </if>
     </where>
       <if test="query.searchQueryToSql != null">
         AND LOWER(groups.name) LIKE #{query.searchQueryToSql} ESCAPE '/'
       </if>
-      <if test="query.withPermissionOnly()">
+      <if test="query.withAtLeastOnePermission()">
         AND groups.permission IS NOT NULL
         AND groups.templateId=#{templateId}
         <if test="query.permission != null">
index 17d1c427a74d04f30c01c04956e45440c116ef68..d9cf4decb30247fbae9a6dd3923de04c946f1c24 100644 (file)
@@ -120,7 +120,7 @@ public class GroupWithPermissionDaoTest {
     assertThat(underTest.countGroupsByPermissionQuery(dbSession,
       PermissionQuery.builder().setPermission(PROVISIONING).build())).isEqualTo(1);
     assertThat(underTest.countGroupsByPermissionQuery(dbSession,
-      PermissionQuery.builder().withPermissionOnly().build())).isEqualTo(2);
+      PermissionQuery.builder().withAtLeastOnePermission().build())).isEqualTo(2);
     assertThat(underTest.countGroupsByPermissionQuery(dbSession,
       PermissionQuery.builder().setSearchQuery("Group-").build())).isEqualTo(3);
     assertThat(underTest.countGroupsByPermissionQuery(dbSession,
@@ -172,7 +172,7 @@ public class GroupWithPermissionDaoTest {
 
     PermissionQuery.Builder builderOnComponent = PermissionQuery.builder().setComponentUuid(project.uuid());
     assertThat(underTest.selectGroupNamesByPermissionQuery(dbSession,
-      builderOnComponent.withPermissionOnly().build())).containsOnlyOnce(group1.getName());
+      builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName());
     assertThat(underTest.selectGroupNamesByPermissionQuery(dbSession,
       builderOnComponent.setPermission(SCAN_EXECUTION).build())).containsOnlyOnce(group1.getName());
     assertThat(underTest.selectGroupNamesByPermissionQuery(dbSession,
index e5d6032191373eaf92673a0bab95f7c1fd563334..55873f22343a62b18dc80906ea7279f92c6d8158 100644 (file)
@@ -77,7 +77,7 @@ public class UserWithPermissionDaoTest {
       .containsOnly(user1.getLogin(), user2.getLogin(), user3.getLogin(), user4.getLogin());
     assertThat(selectLoginsByQuery(PermissionQuery.builder().setPermission(PROVISIONING).build()))
       .containsOnly(user3.getLogin());
-    assertThat(selectLoginsByQuery(PermissionQuery.builder().withPermissionOnly().setComponentUuid(project.uuid()).build()))
+    assertThat(selectLoginsByQuery(PermissionQuery.builder().withAtLeastOnePermission().setComponentUuid(project.uuid()).build()))
       .containsOnly(user4.getLogin());
   }
 
@@ -97,7 +97,7 @@ public class UserWithPermissionDaoTest {
 
     assertThat(countUsersByQuery(PermissionQuery.builder().build())).isEqualTo(4);
     assertThat(countUsersByQuery(PermissionQuery.builder().setPermission(PROVISIONING).build())).isEqualTo(1);
-    assertThat(countUsersByQuery(PermissionQuery.builder().withPermissionOnly().setComponentUuid(project.uuid()).build())).isEqualTo(1);
+    assertThat(countUsersByQuery(PermissionQuery.builder().withAtLeastOnePermission().setComponentUuid(project.uuid()).build())).isEqualTo(1);
   }
 
   @Test
@@ -162,7 +162,7 @@ public class UserWithPermissionDaoTest {
     PermissionQuery.Builder dbQuery = PermissionQuery.builder()
       .setComponentUuid(null)
       .setPermission(SCAN_EXECUTION)
-      .withPermissionOnly();
+      .withAtLeastOnePermission();
     List<String> result = selectLoginsByQuery(dbQuery.build());
     int count = countUsersByQuery(dbQuery.build());
 
@@ -189,7 +189,7 @@ public class UserWithPermissionDaoTest {
     PermissionQuery.Builder dbQuery = PermissionQuery.builder()
       .setComponentUuid(null)
       .setPermission(SCAN_EXECUTION)
-      .withPermissionOnly()
+      .withAtLeastOnePermission()
       .setComponentUuid(project.uuid());
     List<String> result = selectLoginsByQuery(dbQuery.build());
     int count = countUsersByQuery(dbQuery.build());
index d8982f8e4b31cb2e895ce6e180005f56962959d0..4140a5fe56f8be8ae35325a5c73688afe984b104 100644 (file)
@@ -66,14 +66,14 @@ public class GroupWithPermissionTemplateDaoTest {
     permissionTemplateDbTester.addGroupToTemplate(anotherTemplate.getId(), group1.getId(), PROVISIONING);
 
     assertThat(selectGroupNamesByQueryAndTemplate(builder().build(), template.getId())).containsOnly("Group-1", "Group-2", "Group-3", "Anyone");
-    assertThat(selectGroupNamesByQueryAndTemplate(builder().withPermissionOnly().build(), template.getId())).containsOnly("Group-1", "Group-2");
+    assertThat(selectGroupNamesByQueryAndTemplate(builder().withAtLeastOnePermission().build(), template.getId())).containsOnly("Group-1", "Group-2");
     assertThat(selectGroupNamesByQueryAndTemplate(builder().setPermission(USER).build(), template.getId())).containsOnly("Group-1");
     assertThat(selectGroupNamesByQueryAndTemplate(builder().setPermission(USER).build(), anotherTemplate.getId())).containsOnly("Anyone");
     assertThat(selectGroupNamesByQueryAndTemplate(builder().setSearchQuery("groU").build(), template.getId())).containsOnly("Group-1", "Group-2", "Group-3");
     assertThat(selectGroupNamesByQueryAndTemplate(builder().setSearchQuery("nYo").build(), template.getId())).containsOnly("Anyone");
     assertThat(selectGroupNamesByQueryAndTemplate(builder().setSearchQuery("p-2").build(), template.getId())).containsOnly("Group-2");
 
-    assertThat(selectGroupNamesByQueryAndTemplate(builder().withPermissionOnly().build(), 123L)).isEmpty();
+    assertThat(selectGroupNamesByQueryAndTemplate(builder().withAtLeastOnePermission().build(), 123L)).isEmpty();
     assertThat(selectGroupNamesByQueryAndTemplate(builder().setSearchQuery("unknown").build(), template.getId())).isEmpty();
   }
 
@@ -126,14 +126,14 @@ public class GroupWithPermissionTemplateDaoTest {
     permissionTemplateDbTester.addGroupToTemplate(anotherTemplate.getId(), group1.getId(), PROVISIONING);
 
     assertThat(countGroupNamesByQueryAndTemplate(builder().build(), template.getId())).isEqualTo(4);
-    assertThat(countGroupNamesByQueryAndTemplate(builder().withPermissionOnly().build(), template.getId())).isEqualTo(2);
+    assertThat(countGroupNamesByQueryAndTemplate(builder().withAtLeastOnePermission().build(), template.getId())).isEqualTo(2);
     assertThat(countGroupNamesByQueryAndTemplate(builder().setPermission(USER).build(), template.getId())).isEqualTo(1);
     assertThat(countGroupNamesByQueryAndTemplate(builder().setPermission(USER).build(), anotherTemplate.getId())).isEqualTo(1);
     assertThat(countGroupNamesByQueryAndTemplate(builder().setSearchQuery("groU").build(), template.getId())).isEqualTo(3);
     assertThat(countGroupNamesByQueryAndTemplate(builder().setSearchQuery("nYo").build(), template.getId())).isEqualTo(1);
     assertThat(countGroupNamesByQueryAndTemplate(builder().setSearchQuery("p-2").build(), template.getId())).isEqualTo(1);
 
-    assertThat(countGroupNamesByQueryAndTemplate(builder().withPermissionOnly().build(), 123L)).isZero();
+    assertThat(countGroupNamesByQueryAndTemplate(builder().withAtLeastOnePermission().build(), 123L)).isZero();
     assertThat(countGroupNamesByQueryAndTemplate(builder().setSearchQuery("unknown").build(), template.getId())).isZero();
   }
 
index 60f582c54a78d766990d9c2e758180fdac74caed..7aca7df1396f0cb3f6d1d423862f437d0a50e6ef 100644 (file)
@@ -50,7 +50,7 @@ public class UserWithPermissionTemplateDaoTest {
     dbTester.prepareDbUnit(getClass(), "users_with_permissions.xml");
 
     assertThat(dao.selectUserLoginsByQueryAndTemplate(dbSession, builder().build(), TEMPLATE_ID)).containsOnly("user1", "user2", "user3");
-    assertThat(dao.selectUserLoginsByQueryAndTemplate(dbSession, builder().withPermissionOnly().setPermission("user").build(),
+    assertThat(dao.selectUserLoginsByQueryAndTemplate(dbSession, builder().withAtLeastOnePermission().setPermission("user").build(),
       TEMPLATE_ID)).containsOnly("user1", "user2");
   }
 
@@ -58,7 +58,7 @@ public class UserWithPermissionTemplateDaoTest {
   public void return_no_logins_on_unknown_template_key() {
     dbTester.prepareDbUnit(getClass(), "users_with_permissions.xml");
 
-    assertThat(dao.selectUserLoginsByQueryAndTemplate(dbSession, builder().setPermission("user").withPermissionOnly().build(), 999L)).isEmpty();
+    assertThat(dao.selectUserLoginsByQueryAndTemplate(dbSession, builder().setPermission("user").withAtLeastOnePermission().build(), 999L)).isEmpty();
   }
 
   @Test
@@ -67,7 +67,7 @@ public class UserWithPermissionTemplateDaoTest {
 
     assertThat(dao.selectUserLoginsByQueryAndTemplate(
       dbSession,
-      builder().setPermission("user").withPermissionOnly().build(),
+      builder().setPermission("user").withAtLeastOnePermission().build(),
       TEMPLATE_ID)).containsOnly("user1", "user2");
   }
 
@@ -87,12 +87,12 @@ public class UserWithPermissionTemplateDaoTest {
     dbTester.prepareDbUnit(getClass(), "users_with_permissions.xml");
 
     List<String> result = dao.selectUserLoginsByQueryAndTemplate(
-      dbSession, builder().withPermissionOnly().setPermission("user").setSearchQuery("SEr1").build(),
+      dbSession, builder().withAtLeastOnePermission().setPermission("user").setSearchQuery("SEr1").build(),
       TEMPLATE_ID);
     assertThat(result).containsOnly("user1");
 
     result = dao.selectUserLoginsByQueryAndTemplate(
-      dbSession, builder().withPermissionOnly().setPermission("user").setSearchQuery("user").build(),
+      dbSession, builder().withAtLeastOnePermission().setPermission("user").setSearchQuery("user").build(),
       TEMPLATE_ID);
     assertThat(result).hasSize(2);
   }
@@ -118,7 +118,7 @@ public class UserWithPermissionTemplateDaoTest {
     dbTester.prepareDbUnit(getClass(), "users_with_permissions.xml");
 
     assertThat(dao.countUserLoginsByQueryAndTemplate(dbSession, builder().build(), TEMPLATE_ID)).isEqualTo(3);
-    assertThat(dao.countUserLoginsByQueryAndTemplate(dbSession, builder().withPermissionOnly().setPermission("user").build(), TEMPLATE_ID)).isEqualTo(2);
+    assertThat(dao.countUserLoginsByQueryAndTemplate(dbSession, builder().withAtLeastOnePermission().setPermission("user").build(), TEMPLATE_ID)).isEqualTo(2);
   }
 
   @Test