diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java index 20baf83166..aab76ab07e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java @@ -123,11 +123,14 @@ public class AccountQueryBuilder extends QueryBuilder { } @Override - public Predicate defaultField(String query) - throws QueryParseException { + public Predicate defaultField(String query) { List> preds = Lists.newArrayListWithCapacity(4); if ("self".equalsIgnoreCase(query)) { - preds.add(AccountPredicates.id(self())); + try { + preds.add(AccountPredicates.id(self())); + } catch (QueryParseException e) { + // Skip. + } } Integer id = Ints.tryParse(query); if (id != null) { diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java index 1a3a914704..9f2971f399 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java @@ -29,6 +29,7 @@ import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.lifecycle.LifecycleManager; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountCache; @@ -82,6 +83,9 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests { @Inject protected IdentifiedUser.GenericFactory userFactory; + @Inject + private Provider anonymousUser; + @Inject protected InMemoryDatabase schemaFactory; @@ -134,6 +138,20 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests { }; } + protected void setAnonymous() { + requestContext.setContext(new RequestContext() { + @Override + public CurrentUser getUser() { + return anonymousUser.get(); + } + + @Override + public Provider getReviewDbProvider() { + return Providers.of(db); + } + }); + } + @After public void tearDownInjector() { if (lifecycle != null) { @@ -325,6 +343,16 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests { .containsExactlyElementsIn(Arrays.asList(secondaryEmails)).inOrder(); } + @Test + public void asAnonymous() throws Exception { + AccountInfo user1 = newAccount("user1"); + + setAnonymous(); + assertQuery("9999999"); + assertQuery("self"); + assertQuery("username:" + user1.username, user1); + } + protected AccountInfo newAccount(String username) throws Exception { return newAccountWithEmail(username, null); }