Account index: Make query matches case insensitive

Change-Id: I5b18c6eac289b7c7026eb66ec18ed9dc5b7a6cb3
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2016-06-30 14:00:30 +02:00
parent 336dce49ce
commit d9d518e1f6
3 changed files with 18 additions and 4 deletions

View File

@@ -77,7 +77,7 @@ public class AccountField {
// Additional values not currently added by getPersonParts. // Additional values not currently added by getPersonParts.
// TODO(dborowitz): Move to getPersonParts and remove this hack. // TODO(dborowitz): Move to getPersonParts and remove this hack.
if (fullName != null) { if (fullName != null) {
parts.add(fullName); parts.add(fullName.toLowerCase());
} }
return parts; return parts;
} }

View File

@@ -35,12 +35,12 @@ public class AccountPredicates {
static Predicate<AccountState> email(String email) { static Predicate<AccountState> email(String email) {
return new AccountPredicate(AccountField.EMAIL, return new AccountPredicate(AccountField.EMAIL,
AccountQueryBuilder.FIELD_EMAIL, email); AccountQueryBuilder.FIELD_EMAIL, email.toLowerCase());
} }
static Predicate<AccountState> equalsName(String name) { static Predicate<AccountState> equalsName(String name) {
return new AccountPredicate(AccountField.NAME_PART, return new AccountPredicate(AccountField.NAME_PART,
AccountQueryBuilder.FIELD_NAME, name); AccountQueryBuilder.FIELD_NAME, name.toLowerCase());
} }
public static Predicate<AccountState> isActive() { public static Predicate<AccountState> isActive() {
@@ -53,7 +53,7 @@ public class AccountPredicates {
static Predicate<AccountState> username(String username) { static Predicate<AccountState> username(String username) {
return new AccountPredicate(AccountField.USERNAME, return new AccountPredicate(AccountField.USERNAME,
AccountQueryBuilder.FIELD_USERNAME, username); AccountQueryBuilder.FIELD_USERNAME, username.toLowerCase());
} }
static class AccountPredicate extends IndexPredicate<AccountState> { static class AccountPredicate extends IndexPredicate<AccountState> {

View File

@@ -171,6 +171,9 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests {
AccountInfo user4 = AccountInfo user4 =
newAccountWithEmail("user4", prefix + "user4@example.com"); newAccountWithEmail("user4", prefix + "user4@example.com");
AccountInfo user5 =
newAccountWithEmail("user5", name("user5MixedCase@example.com"));
assertQuery("notexisting@test.com"); assertQuery("notexisting@test.com");
assertQuery(currentUserInfo.email, currentUserInfo); assertQuery(currentUserInfo.email, currentUserInfo);
@@ -182,6 +185,10 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests {
assertQuery(domain, user2, user3); assertQuery(domain, user2, user3);
assertQuery("email:" + prefix, user4); assertQuery("email:" + prefix, user4);
assertQuery(user5.email, user5);
assertQuery("email:" + user5.email, user5);
assertQuery("email:" + user5.email.toUpperCase(), user5);
} }
@Test @Test
@@ -193,6 +200,7 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests {
assertQuery(user1.username, user1); assertQuery(user1.username, user1);
assertQuery("username:" + user1.username, user1); assertQuery("username:" + user1.username, user1);
assertQuery("username:" + user1.username.toUpperCase(), user1);
} }
@Test @Test
@@ -224,8 +232,14 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests {
assertQuery("name:" + quote(user1.name), user1); assertQuery("name:" + quote(user1.name), user1);
assertQuery("John", user1); assertQuery("John", user1);
assertQuery("john", user1); assertQuery("john", user1);
assertQuery("Doe", user1);
assertQuery("doe", user1);
assertQuery("DOE", user1);
assertQuery("name:John", user1); assertQuery("name:John", user1);
assertQuery("name:john", user1); assertQuery("name:john", user1);
assertQuery("name:Doe", user1);
assertQuery("name:doe", user1);
assertQuery("name:DOE", user1);
assertQuery(quote(user2.name), user2); assertQuery(quote(user2.name), user2);
assertQuery("name:" + quote(user2.name), user2); assertQuery("name:" + quote(user2.name), user2);