Merge branch 'stable-2.14' into stable-2.15 * stable-2.14: Adapt to changes in Gerrit core Adapt to changes in Gerrit core Change-Id: I5e1cbf15f66668b6992dcda18e961f2988a90bef
diff --git a/BUILD b/BUILD index d6d4eeb..9ccdae9 100644 --- a/BUILD +++ b/BUILD
@@ -1,4 +1,5 @@ -load("//tools/bzl:plugin.bzl", "gerrit_plugin") +load("//tools/bzl:junit.bzl", "junit_tests") +load("//tools/bzl:plugin.bzl", "gerrit_plugin", "PLUGIN_DEPS", "PLUGIN_TEST_DEPS") gerrit_plugin( name = "singleusergroup", @@ -9,3 +10,13 @@ ], resources = glob(["src/main/resources/**/*"]), ) + +junit_tests( + name = "singleusergroup_tests", + srcs = glob(["src/test/java/**/*Test.java"]), + tags = ["replication"], + visibility = ["//visibility:public"], + deps = PLUGIN_TEST_DEPS + PLUGIN_DEPS + [ + ":singleusergroup__plugin", + ], +)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java b/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java index a61c851..bfe18c1 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java +++ b/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
@@ -24,23 +24,25 @@ import com.google.gerrit.common.data.GroupDescription; import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.extensions.registration.DynamicSet; +import com.google.gerrit.index.query.QueryParseException; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AbstractGroupBackend; import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountState; -import com.google.gerrit.server.account.ExternalId; import com.google.gerrit.server.account.GroupBackend; import com.google.gerrit.server.account.GroupMembership; import com.google.gerrit.server.account.ListGroupMembership; -import com.google.gerrit.server.project.ProjectControl; -import com.google.gerrit.server.query.QueryParseException; +import com.google.gerrit.server.account.externalids.ExternalId; +import com.google.gerrit.server.project.ProjectState; +import com.google.gerrit.server.query.account.AccountPredicates; import com.google.gerrit.server.query.account.AccountQueryBuilder; import com.google.gerrit.server.query.account.AccountQueryProcessor; import com.google.gwtorm.server.OrmException; import com.google.inject.AbstractModule; import com.google.inject.Inject; +import com.google.inject.Provider; import com.google.inject.Singleton; import java.util.Collection; import java.util.Collections; @@ -72,16 +74,16 @@ private final AccountCache accountCache; private final AccountQueryBuilder queryBuilder; - private final AccountQueryProcessor queryProcessor; + private final Provider<AccountQueryProcessor> queryProvider; @Inject SingleUserGroup( AccountCache accountCache, AccountQueryBuilder queryBuilder, - AccountQueryProcessor queryProcessor) { + Provider<AccountQueryProcessor> queryProvider) { this.accountCache = accountCache; this.queryBuilder = queryBuilder; - this.queryProcessor = queryProcessor; + this.queryProvider = queryProvider; } @Override @@ -90,7 +92,7 @@ } @Override - public GroupMembership membershipsOf(final IdentifiedUser user) { + public GroupMembership membershipsOf(IdentifiedUser user) { ImmutableList.Builder<AccountGroup.UUID> groups = ImmutableList.builder(); groups.add(uuid(user.getAccountId())); if (user.getUserName() != null) { @@ -100,7 +102,7 @@ } @Override - public GroupDescription.Basic get(final AccountGroup.UUID uuid) { + public GroupDescription.Basic get(AccountGroup.UUID uuid) { String ident = username(uuid); AccountState state; if (ident.matches(ACCOUNT_ID_PATTERN)) { @@ -141,10 +143,14 @@ } @Override - public Collection<GroupReference> suggest(String name, @Nullable ProjectControl project) { + public Collection<GroupReference> suggest(String name, @Nullable ProjectState project) { try { return Lists.transform( - queryProcessor.setLimit(MAX).query(queryBuilder.defaultQuery(name)).entities(), + queryProvider + .get() + .setUserProvidedLimit(MAX) + .query(AccountPredicates.andActive(queryBuilder.defaultQuery(name))) + .entities(), new Function<AccountState, GroupReference>() { @Override public GroupReference apply(AccountState state) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java b/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java new file mode 100644 index 0000000..9bc8859 --- /dev/null +++ b/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java
@@ -0,0 +1,38 @@ +// Copyright (C) 2018 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.singleusergroup; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.gerrit.acceptance.LightweightPluginDaemonTest; +import com.google.gerrit.acceptance.NoHttpd; +import com.google.gerrit.acceptance.TestPlugin; +import com.google.gerrit.extensions.common.GroupInfo; +import java.util.Map; +import org.junit.Test; + +@NoHttpd +@TestPlugin( + name = "singleusergroup", + sysModule = "com.googlesource.gerrit.plugins.singleusergroup.SingleUserGroup$Module") +public class SingleUserGroupTest extends LightweightPluginDaemonTest { + @Test + public void testSuggestion() throws Exception { + // No ability to modify account and therefore no ACL to see secondary email + setApiUser(user); + Map<String, GroupInfo> groups = gApi.groups().list().withSuggest("adm").getAsMap(); + assertThat(groups).containsKey("user/Administrator (admin)"); + } +}