From 15b22f54231dec185dbc6e058fb9bb7315c4ba53 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 4 Dec 2013 15:09:08 +0100 Subject: [PATCH] SONAR-4930 The group research is no more case sensitive --- .../org/sonar/core/user/GroupMembershipQuery.java | 2 +- .../org/sonar/core/user/GroupMembershipMapper.xml | 2 +- .../sonar/core/user/GroupMembershipDaoTest.java | 15 ++++++++++++++- 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 @@ - AND (g.name LIKE #{query.groupSearchSql} ESCAPE '/') + AND (UPPER(g.name) LIKE #{query.groupSearchSql} ESCAPE '/') 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 result = dao.selectGroups(GroupMembershipQuery.builder().login("arthur").groupSearch("user").build(), 200L); @@ -97,6 +97,19 @@ public class GroupMembershipDaoTest extends AbstractDaoTestCase { assertThat(result).hasSize(3); } + @Test + public void search_by_group_name_with_capitalization() throws Exception { + setupData("shared"); + + List 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"); -- 2.39.5