diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-10-21 10:50:08 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-10-21 15:58:40 +0200 |
commit | f34266f025c3f862c5f1bdf58a0983545334c4ae (patch) | |
tree | c9a3e4982e480909b0bfff9cdfd97ed4c83ddb9d /sonar-db/src | |
parent | c004eacf334304b7a850185fe2cc4d6d521506b0 (diff) | |
download | sonarqube-f34266f025c3f862c5f1bdf58a0983545334c4ae.tar.gz sonarqube-f34266f025c3f862c5f1bdf58a0983545334c4ae.zip |
SONAR-8278 Support organizations in web service api/permissions/search_templates
Diffstat (limited to 'sonar-db/src')
4 files changed, 27 insertions, 37 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java index 9beeb044d2c..ac6bb49fefd 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java @@ -101,21 +101,9 @@ public class PermissionTemplateDao implements Dao { return mapper(session).selectByUuid(templateUuid); } - /** - * @deprecated does not support organizations. Should return group ids. - */ - @Deprecated - public List<PermissionTemplateDto> selectAll(DbSession session, String nameMatch) { - String uppercaseNameMatch = toUppercaseSqlQuery(nameMatch); - return mapper(session).selectAll(uppercaseNameMatch); - } - - /** - * @deprecated does not support organizations. Should return group ids. - */ - @Deprecated - public List<PermissionTemplateDto> selectAll(DbSession session) { - return mapper(session).selectAll(null); + public List<PermissionTemplateDto> selectAll(DbSession session, String organizationUuid, @Nullable String nameMatch) { + String upperCaseNameLikeSql = nameMatch != null ? toUppercaseSqlQuery(nameMatch) : null; + return mapper(session).selectAll(organizationUuid, upperCaseNameLikeSql); } private static String toUppercaseSqlQuery(String nameMatch) { diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java index 64d4626e7b3..55b3d2569ec 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java @@ -74,7 +74,7 @@ public interface PermissionTemplateMapper { int countGroupNamesByQueryAndTemplate(@Param("query") PermissionQuery query, @Param("templateId") long templateId); - List<PermissionTemplateDto> selectAll(@Nullable @Param("nameMatch") String nameMatch); + List<PermissionTemplateDto> selectAll(@Param("organizationUuid") String organizationUuid, @Nullable @Param("upperCaseNameLikeSql") String upperCaseNameLikeSql); void usersCountByTemplateIdAndPermission(Map<String, Object> parameters, ResultHandler resultHandler); diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml index e60f18a5a82..0001f3e18f4 100644 --- a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml @@ -195,15 +195,15 @@ </select> <select id="selectAll" parameterType="map" resultType="PermissionTemplate"> - SELECT + select <include refid="templateColumns"/> - FROM permission_templates - <where> - <if test="nameMatch!=null"> - AND (UPPER(name) LIKE #{nameMatch} ESCAPE '/') - </if> - </where> - ORDER BY UPPER(name), name + from permission_templates + where + organization_uuid = #{organizationUuid,jdbcType=VARCHAR} + <if test="upperCaseNameLikeSql != null"> + and upper(name) like #{upperCaseNameLikeSql} escape '/' + </if> + order by upper(name), name </select> <select id="selectByName" parameterType="map" resultType="PermissionTemplate"> diff --git a/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java b/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java index b4d3ed70416..8707fcdb930 100644 --- a/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java +++ b/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java @@ -94,17 +94,29 @@ public class PermissionTemplateDaoTest { } @Test - public void should_select_all_permission_templates() { + public void selectAll_without_name_filtering() { db.prepareDbUnit(getClass(), "selectAllPermissionTemplates.xml"); commit(); - List<PermissionTemplateDto> permissionTemplates = underTest.selectAll(dbSession); - + List<PermissionTemplateDto> permissionTemplates = underTest.selectAll(dbSession, "org1", null); assertThat(permissionTemplates).hasSize(3); assertThat(permissionTemplates).extracting("id").containsOnly(1L, 2L, 3L); assertThat(permissionTemplates).extracting("name").containsOnly("template1", "template2", "template3"); assertThat(permissionTemplates).extracting("kee").containsOnly("template1_20130102_030405", "template2_20130102_030405", "template3_20130102_030405"); assertThat(permissionTemplates).extracting("description").containsOnly("description1", "description2", "description3"); + + assertThat(underTest.selectAll(dbSession, "missingOrg", null)).isEmpty(); + } + + @Test + public void selectAll_with_name_filtering() { + PermissionTemplateDto t1InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("aBcDeF").setOrganizationUuid("org1")); + PermissionTemplateDto t2InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("cdefgh").setOrganizationUuid("org1")); + PermissionTemplateDto t3InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("hijkl").setOrganizationUuid("org2")); + PermissionTemplateDto t4InOrg2 = templateDb.insertTemplate(newPermissionTemplateDto().setName("cdefgh").setOrganizationUuid("org2")); + + assertThat(underTest.selectAll(dbSession, "org1", "def")).extracting(PermissionTemplateDto::getId).containsExactly(t1InOrg1.getId(), t2InOrg1.getId()); + assertThat(underTest.selectAll(dbSession, "org1", "missing")).isEmpty(); } @Test @@ -240,16 +252,6 @@ public class PermissionTemplateDaoTest { } @Test - public void select_by_name_query_and_pagination() { - templateDb.insertTemplate(newPermissionTemplateDto().setName("aaabbb")); - templateDb.insertTemplate(newPermissionTemplateDto().setName("aaaccc")); - - List<PermissionTemplateDto> templates = underTest.selectAll(dbSession, "aaa"); - - assertThat(templates.get(0).getName()).isEqualTo("aaabbb"); - } - - @Test public void selectPotentialPermissions_with_unknown_template_and_no_user() { List<String> result = underTest.selectPotentialPermissionsByUserIdAndTemplateId(dbSession, null, 42L); |