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.
// TODO(dborowitz): Move to getPersonParts and remove this hack.
if (fullName != null) {
parts.add(fullName);
parts.add(fullName.toLowerCase());
}
return parts;
}

View File

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

View File

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