aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2016-10-21 10:50:08 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2016-10-21 15:58:40 +0200
commitf34266f025c3f862c5f1bdf58a0983545334c4ae (patch)
treec9a3e4982e480909b0bfff9cdfd97ed4c83ddb9d /sonar-db/src
parentc004eacf334304b7a850185fe2cc4d6d521506b0 (diff)
downloadsonarqube-f34266f025c3f862c5f1bdf58a0983545334c4ae.tar.gz
sonarqube-f34266f025c3f862c5f1bdf58a0983545334c4ae.zip
SONAR-8278 Support organizations in web service api/permissions/search_templates
Diffstat (limited to 'sonar-db/src')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java18
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java2
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml16
-rw-r--r--sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java28
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);