aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2013-12-04 15:09:08 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2013-12-04 15:09:08 +0100
commit15b22f54231dec185dbc6e058fb9bb7315c4ba53 (patch)
tree301525822cbec6e2e235c2e62f50aeba3a36fc2e
parentdcab3f7a94602d11c0cf6e4ad2da0897476a7e54 (diff)
downloadsonarqube-15b22f54231dec185dbc6e058fb9bb7315c4ba53.tar.gz
sonarqube-15b22f54231dec185dbc6e058fb9bb7315c4ba53.zip
SONAR-4930 The group research is no more case sensitive
-rw-r--r--sonar-core/src/main/java/org/sonar/core/user/GroupMembershipQuery.java2
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/user/GroupMembershipMapper.xml2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/user/GroupMembershipDaoTest.java15
3 files changed, 16 insertions, 3 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/user/GroupMembershipQuery.java b/sonar-core/src/main/java/org/sonar/core/user/GroupMembershipQuery.java
index 0af288cdc38..0ef6ee4e141 100644
--- a/sonar-core/src/main/java/org/sonar/core/user/GroupMembershipQuery.java
+++ b/sonar-core/src/main/java/org/sonar/core/user/GroupMembershipQuery.java
@@ -69,7 +69,7 @@ public class GroupMembershipQuery {
private String groupSearchToSql(@Nullable String s) {
String sql = null;
if (s != null) {
- sql = StringUtils.replace(s, "%", "/%");
+ sql = StringUtils.replace(StringUtils.upperCase(s), "%", "/%");
sql = StringUtils.replace(sql, "_", "/_");
sql = "%" + sql + "%";
}
diff --git a/sonar-core/src/main/resources/org/sonar/core/user/GroupMembershipMapper.xml b/sonar-core/src/main/resources/org/sonar/core/user/GroupMembershipMapper.xml
index 4c49396ab12..468b32f2a66 100644
--- a/sonar-core/src/main/resources/org/sonar/core/user/GroupMembershipMapper.xml
+++ b/sonar-core/src/main/resources/org/sonar/core/user/GroupMembershipMapper.xml
@@ -28,7 +28,7 @@
</when>
</choose>
<if test="query.groupSearch() != null">
- AND (g.name LIKE #{query.groupSearchSql} ESCAPE '/')
+ AND (UPPER(g.name) LIKE #{query.groupSearchSql} ESCAPE '/')
</if>
</where>
</sql>
diff --git a/sonar-core/src/test/java/org/sonar/core/user/GroupMembershipDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/GroupMembershipDaoTest.java
index 68ce939cf85..0eaa9560ae7 100644
--- a/sonar-core/src/test/java/org/sonar/core/user/GroupMembershipDaoTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/user/GroupMembershipDaoTest.java
@@ -85,7 +85,7 @@ public class GroupMembershipDaoTest extends AbstractDaoTestCase {
}
@Test
- public void select_only_matching_group_name() throws Exception {
+ public void search_by_group_name() throws Exception {
setupData("shared");
List<GroupMembershipDto> result = dao.selectGroups(GroupMembershipQuery.builder().login("arthur").groupSearch("user").build(), 200L);
@@ -98,6 +98,19 @@ public class GroupMembershipDaoTest extends AbstractDaoTestCase {
}
@Test
+ public void search_by_group_name_with_capitalization() throws Exception {
+ setupData("shared");
+
+ List<GroupMembershipDto> result = dao.selectGroups(GroupMembershipQuery.builder().login("arthur").groupSearch("UsER").build(), 200L);
+ assertThat(result).hasSize(1);
+
+ assertThat(result.get(0).getName()).isEqualTo("sonar-users");
+
+ result = dao.selectGroups(GroupMembershipQuery.builder().login("arthur").groupSearch("sonar").build(), 200L);
+ assertThat(result).hasSize(3);
+ }
+
+ @Test
public void should_be_sorted_by_group_name() throws Exception {
setupData("should_be_sorted_by_group_name");