Adapt to Gerrit v3.0 backend and test APIs
Restore the module functionality by adapting to the new
permission backend APIs and acceptance test framework
in Gerrit v3.0.
Change-Id: I823e1b399fb4a3daacd639068fb212355f774a55
diff --git a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
index 508fd85..54dd57c 100644
--- a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
+++ b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
@@ -18,21 +18,19 @@
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.Project.NameKey;
-import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult;
import com.google.gerrit.server.permissions.PermissionBackend.ForProject;
import com.google.gerrit.server.permissions.PermissionBackend.ForRef;
import com.google.gerrit.server.permissions.PermissionBackend.RefFilterOptions;
import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.inject.Inject;
-import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;
import java.io.IOException;
import java.util.Collection;
@@ -51,7 +49,6 @@
private final ForProject defaultForProject;
private final NameKey project;
private final ChangeNotes.Factory changeNotesFactory;
- private final Provider<ReviewDb> dbProvider;
public interface Factory {
ForProjectWrapper get(ForProject defaultForProject, Project.NameKey project);
@@ -60,13 +57,11 @@
@Inject
public ForProjectWrapper(
ChangeNotes.Factory changeNotesFactory,
- Provider<ReviewDb> dbProvider,
@Assisted ForProject defaultForProject,
@Assisted Project.NameKey project) {
this.defaultForProject = defaultForProject;
this.project = project;
this.changeNotesFactory = changeNotesFactory;
- this.dbProvider = dbProvider;
}
@Override
@@ -75,12 +70,13 @@
}
@Override
- public void check(ProjectPermission perm) throws AuthException, PermissionBackendException {
+ public void check(CoreOrPluginProjectPermission perm)
+ throws AuthException, PermissionBackendException {
defaultForProject.check(perm);
}
@Override
- public Set<ProjectPermission> test(Collection<ProjectPermission> permSet)
+ public <T extends CoreOrPluginProjectPermission> Set<T> test(Collection<T> permSet)
throws PermissionBackendException {
return defaultForProject.test(permSet);
}
@@ -118,7 +114,7 @@
}
@Override
- public BooleanCondition testCond(ProjectPermission perm) {
+ public BooleanCondition testCond(CoreOrPluginProjectPermission perm) {
return defaultForProject.testCond(perm);
}
@@ -131,7 +127,7 @@
Set<String> result = new HashSet<>();
Stream<ChangeNotesResult> s;
try {
- s = changeNotesFactory.scan(repo, dbProvider.get(), project);
+ s = changeNotesFactory.scan(repo, project);
} catch (IOException e) {
logger.atSevere().withCause(e).log(
"Cannot load changes for project %s, assuming no changes are visible", project);
diff --git a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java
index 32f8ac4..34a35b7 100644
--- a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java
+++ b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java
@@ -17,10 +17,12 @@
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GitUtil;
import com.google.gerrit.acceptance.TestAccount;
+import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
import com.google.gerrit.extensions.api.groups.GroupApi;
import com.google.gerrit.extensions.api.groups.GroupInput;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.inject.Inject;
import com.googlesource.gerrit.modules.gitrefsfilter.FilterRefsCapability;
import java.io.IOException;
import java.util.List;
@@ -35,23 +37,25 @@
abstract class AbstractGitDaemonTest extends AbstractDaemonTest {
private static final String REFS_CHANGES = "+refs/changes/*:refs/remotes/origin/*";
+ @Inject private RequestScopeOperations requestScopeOperations;
+
protected void createChangeAndAbandon() throws Exception, RestApiException {
- setApiUser(admin);
+ requestScopeOperations.setApiUser(admin.id());
createChange();
int changeNum = changeNumOfRef(getChangesRefsAs(admin).get(0));
gApi.changes().id(changeNum).abandon();
}
protected void createFilteredRefsGroup() throws Exception {
- setApiUser(admin);
+ requestScopeOperations.setApiUser(admin.id());
String group = name("filtered-refs-group");
GroupInput in = new GroupInput();
in.name = group;
GroupApi groupApi = gApi.groups().create(in);
- groupApi.addMembers(user.username);
+ groupApi.addMembers(user.username());
- setApiUser(user);
- groupApi.removeMembers(admin.username);
+ requestScopeOperations.setApiUser(user.id());
+ groupApi.removeMembers(admin.username());
String groupId = groupApi.detail().id;
allowGlobalCapabilities(
diff --git a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
index 145c7c9..854ac6e 100644
--- a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
+++ b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
@@ -41,20 +41,20 @@
public void testUserWithFilterOutCapabilityShouldNotSeeAbandonedChangesRefs() throws Exception {
createChangeAndAbandon();
- assertThat(getRefs(cloneProjectChangesRefs(user))).hasSize(0);
+ assertThat(getRefs(cloneProjectChangesRefs(user))).isEmpty();
}
@Test
public void testUserWithFilterOutCapabilityShouldSeeOpenChangesRefs() throws Exception {
createChange();
- assertThat(getRefs(cloneProjectChangesRefs(user))).hasSize(1);
+ assertThat(getRefs(cloneProjectChangesRefs(user))).isNotEmpty();
}
@Test
public void testAdminUserShouldSeeAbandonedChangesRefs() throws Exception {
createChangeAndAbandon();
- assertThat(getRefs(cloneProjectChangesRefs(admin))).hasSize(1);
+ assertThat(getRefs(cloneProjectChangesRefs(admin))).isNotEmpty();
}
}