diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java index 565d66de34..7fab6b1221 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java @@ -15,6 +15,7 @@ package com.google.gerrit.acceptance.rest.change; import static com.google.common.truth.Truth.assertThat; +import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS; import com.google.common.base.Function; import com.google.common.collect.FluentIterable; @@ -141,6 +142,18 @@ public class SuggestReviewersIT extends AbstractDaemonTest { .isEqualTo(user2.fullName); } + @Test + public void suggestReviewsPrivateProjectVisibility() throws Exception { + String changeId = createChange().getChangeId(); + List reviewers; + + setApiUser(user3); + block("read", ANONYMOUS_USERS, "refs/*"); + allow("read", group1.getGroupUUID(), "refs/*"); + reviewers = suggestReviewers(changeId, user2.username, 2); + assertThat(reviewers).isEmpty(); + } + @Test @GerritConfig(name = "accounts.visibility", value = "SAME_GROUP") public void suggestReviewersViewAllAccounts() throws Exception { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java index e1f786be69..f246f3e934 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java @@ -178,13 +178,14 @@ public class ReviewersUtil { throws OrmException { AccountIndex searchIndex = indexes.getSearchIndex(); if (searchIndex != null) { - return suggestAccountsFromIndex(suggestReviewers); + return suggestAccountsFromIndex(suggestReviewers, visibilityControl); } return suggestAccountsFromDb(suggestReviewers, visibilityControl); } private Collection suggestAccountsFromIndex( - SuggestReviewers suggestReviewers) throws OrmException { + SuggestReviewers suggestReviewers, VisibilityControl visibilityControl) + throws OrmException { try { Map matches = new LinkedHashMap<>(); QueryResult result = queryProcessor @@ -192,7 +193,9 @@ public class ReviewersUtil { .query(queryBuilder.defaultQuery(suggestReviewers.getQuery())); for (AccountState accountState : result.entities()) { Account.Id id = accountState.getAccount().getId(); - matches.put(id, accountLoader.get(id)); + if (visibilityControl.isVisibleTo(id)) { + matches.put(id, accountLoader.get(id)); + } } accountLoader.fill();