diff options
author | Jacek Centkowski <jcentkowski@collab.net> | 2020-04-21 19:22:59 +0200 |
---|---|---|
committer | Jacek Centkowski <jcentkowski@collab.net> | 2020-04-21 19:22:59 +0200 |
commit | 3383a52df8ecbcc4228f861448ecbc121a2a8d6a (patch) | |
tree | af0a6ff3366d0e627e22fb247fa986b486ace88f | |
parent | 8aa2b747a125f54afd3261da1ef995394f82f8ca (diff) |
Add test that verifies 'visibleto' predicate for group
It verifies behaviour of 'visibleto' predicate for Gerrit 2.15.
Bug: Issue 12606
Change-Id: I7e172ef9a6864fde7153e2ce7106663238d99a4d
-rw-r--r-- | gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java index 215089af64..a7e43dc7fe 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java @@ -39,8 +39,10 @@ import com.google.common.collect.Streams; import com.google.common.truth.ThrowableSubject; import com.google.gerrit.common.Nullable; import com.google.gerrit.common.TimeUtil; +import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.Permission; +import com.google.gerrit.common.data.PermissionRule; import com.google.gerrit.extensions.api.GerritApi; import com.google.gerrit.extensions.api.changes.AddReviewerInput; import com.google.gerrit.extensions.api.changes.AssigneeInput; @@ -71,6 +73,7 @@ import com.google.gerrit.index.QueryOptions; import com.google.gerrit.index.Schema; import com.google.gerrit.lifecycle.LifecycleManager; import com.google.gerrit.reviewdb.client.Account; +import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Patch; @@ -125,6 +128,7 @@ import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Provider; import com.google.inject.util.Providers; +import java.io.IOException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; @@ -137,6 +141,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.concurrent.TimeUnit; +import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.ObjectId; @@ -1625,12 +1630,49 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { accountManager.authenticate(AuthRequest.forUser("anotheruser")).getAccountId(); assertQuery(q + " visibleto:" + user2.get(), change1); + // Check group visibility + String g1 = createGroup("group1", "Administrators"); + gApi.groups().id(g1).addMembers("anotheruser"); + + // by default when group is created without any permission granted nothing is visible to it and + // having members or not has nothing to do with it + assertQuery(q + " visibleto:" + g1); + + // change is visible to group ONLY when access is granted + grant( + new Project.NameKey("repo"), + "refs/*", + Permission.READ, + false, + new AccountGroup.UUID(gApi.groups().id(g1).get().id)); + assertQuery(q + " visibleto:" + g1, change1); + requestContext.setContext( newRequestContext( accountManager.authenticate(AuthRequest.forUser("anotheruser")).getAccountId())); assertQuery("is:visible", change1); } + private void grant( + Project.NameKey project, + String ref, + String permission, + boolean force, + AccountGroup.UUID groupUUID) + throws IOException, ConfigInvalidException { + try (MetaDataUpdate md = metaDataUpdateFactory.create(project)) { + md.setMessage(String.format("Grant %s on %s", permission, ref)); + ProjectConfig config = ProjectConfig.read(md); + AccessSection s = config.getAccessSection(ref, true); + Permission p = s.getPermission(permission, true); + PermissionRule rule = Util.newRule(config, groupUUID); + rule.setForce(force); + p.add(rule); + config.commit(md); + projectCache.evict(config.getProject()); + } + } + @Test public void byCommentBy() throws Exception { TestRepository<Repo> repo = createProject("repo"); |