Let RefControlTest be responsible for creating own test projects
All test cases which test inheritance of the access rights assume
existence of two projects: "local" and "parent", where "parent"
is the parent of the "local".
The cc00e0056991355b8780bebd221acf3baf1f55e7 moved the creation of
the "parent" into the Util class and it wasn't intuitive to follow
what exactly the "util.getParentConfig()" meant.
Remove the creation of the "parent" project from the Util class and
create the "parent" in the RefControlTest. Also, make sure that "parent"
is set to be the parent of the "local" in the setUp method.
Change-Id: I991a9bc25ca7609b5d9e15e54167446c7b0aa6cf
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java
index dc3529c..5e64199 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java
@@ -55,6 +55,8 @@
private final AccountGroup.UUID fixers = new AccountGroup.UUID("test.fixers");
private Project.NameKey localKey = new Project.NameKey("local");
private ProjectConfig local;
+ private Project.NameKey parentKey = new Project.NameKey("parent");
+ private ProjectConfig parent;
private final Util util;
public RefControlTest() {
@@ -63,9 +65,14 @@
@Before
public void setUp() throws Exception {
+ parent = new ProjectConfig(parentKey);
+ parent.load(newRepository(parentKey));
+ util.add(parent);
+
local = new ProjectConfig(localKey);
local.load(newRepository(localKey));
util.add(local);
+ local.getProject().setParentName(parentKey);
}
@Test
@@ -139,8 +146,8 @@
@Test
public void testInheritRead_SingleBranchDeniesUpload() {
- allow(util.getParentConfig(), READ, REGISTERED_USERS, "refs/*");
- allow(util.getParentConfig(), PUSH, REGISTERED_USERS, "refs/for/refs/*");
+ allow(parent, READ, REGISTERED_USERS, "refs/*");
+ allow(parent, PUSH, REGISTERED_USERS, "refs/for/refs/*");
allow(local, READ, REGISTERED_USERS, "refs/heads/foobar");
doNotInherit(local, READ, "refs/heads/foobar");
doNotInherit(local, PUSH, "refs/for/refs/heads/foobar");
@@ -157,8 +164,8 @@
@Test
public void testBlockPushDrafts() {
- allow(util.getParentConfig(), PUSH, REGISTERED_USERS, "refs/for/refs/*");
- block(util.getParentConfig(), PUSH, ANONYMOUS_USERS, "refs/drafts/*");
+ allow(parent, PUSH, REGISTERED_USERS, "refs/for/refs/*");
+ block(parent, PUSH, ANONYMOUS_USERS, "refs/drafts/*");
ProjectControl u = util.user(local);
assertTrue("can upload refs/heads/master",
@@ -169,8 +176,8 @@
@Test
public void testBlockPushDraftsUnblockAdmin() {
- block(util.getParentConfig(), PUSH, ANONYMOUS_USERS, "refs/drafts/*");
- allow(util.getParentConfig(), PUSH, ADMIN, "refs/drafts/*");
+ block(parent, PUSH, ANONYMOUS_USERS, "refs/drafts/*");
+ allow(parent, PUSH, ADMIN, "refs/drafts/*");
assertTrue("push is blocked for anonymous to refs/drafts/master",
util.user(local).controlForRef("refs/drafts/refs/heads/master")
@@ -182,8 +189,8 @@
@Test
public void testInheritRead_SingleBranchDoesNotOverrideInherited() {
- allow(util.getParentConfig(), READ, REGISTERED_USERS, "refs/*");
- allow(util.getParentConfig(), PUSH, REGISTERED_USERS, "refs/for/refs/*");
+ allow(parent, READ, REGISTERED_USERS, "refs/*");
+ allow(parent, PUSH, REGISTERED_USERS, "refs/for/refs/*");
allow(local, READ, REGISTERED_USERS, "refs/heads/foobar");
ProjectControl u = util.user(local);
@@ -198,20 +205,20 @@
@Test
public void testInheritDuplicateSections() throws Exception {
- allow(util.getParentConfig(), READ, ADMIN, "refs/*");
+ allow(parent, READ, ADMIN, "refs/*");
allow(local, READ, DEVS, "refs/heads/*");
- local.getProject().setParentName(util.getParentConfig().getProject().getName());
assertTrue("a can read", util.user(local, "a", ADMIN).isVisible());
- local = new ProjectConfig(new Project.NameKey("local"));
+ local = new ProjectConfig(localKey);
local.load(newRepository(localKey));
+ local.getProject().setParentName(parentKey);
allow(local, READ, DEVS, "refs/*");
assertTrue("d can read", util.user(local, "d", DEVS).isVisible());
}
@Test
public void testInheritRead_OverrideWithDeny() {
- allow(util.getParentConfig(), READ, REGISTERED_USERS, "refs/*");
+ allow(parent, READ, REGISTERED_USERS, "refs/*");
deny(local, READ, REGISTERED_USERS, "refs/*");
ProjectControl u = util.user(local);
@@ -220,7 +227,7 @@
@Test
public void testInheritRead_AppendWithDenyOfRef() {
- allow(util.getParentConfig(), READ, REGISTERED_USERS, "refs/*");
+ allow(parent, READ, REGISTERED_USERS, "refs/*");
deny(local, READ, REGISTERED_USERS, "refs/heads/*");
ProjectControl u = util.user(local);
@@ -232,7 +239,7 @@
@Test
public void testInheritRead_OverridesAndDeniesOfRef() {
- allow(util.getParentConfig(), READ, REGISTERED_USERS, "refs/*");
+ allow(parent, READ, REGISTERED_USERS, "refs/*");
deny(local, READ, REGISTERED_USERS, "refs/*");
allow(local, READ, REGISTERED_USERS, "refs/heads/*");
@@ -245,7 +252,7 @@
@Test
public void testInheritSubmit_OverridesAndDeniesOfRef() {
- allow(util.getParentConfig(), SUBMIT, REGISTERED_USERS, "refs/*");
+ allow(parent, SUBMIT, REGISTERED_USERS, "refs/*");
deny(local, SUBMIT, REGISTERED_USERS, "refs/*");
allow(local, SUBMIT, REGISTERED_USERS, "refs/heads/*");
@@ -257,7 +264,7 @@
@Test
public void testCannotUploadToAnyRef() {
- allow(util.getParentConfig(), READ, REGISTERED_USERS, "refs/*");
+ allow(parent, READ, REGISTERED_USERS, "refs/*");
allow(local, READ, DEVS, "refs/heads/*");
allow(local, PUSH, DEVS, "refs/for/refs/heads/*");
@@ -307,7 +314,7 @@
@Test
public void testSortWithRegex() {
allow(local, READ, DEVS, "^refs/heads/.*");
- allow(util.getParentConfig(), READ, ANONYMOUS_USERS, "^refs/heads/.*-QA-.*");
+ allow(parent, READ, ANONYMOUS_USERS, "^refs/heads/.*-QA-.*");
ProjectControl u = util.user(local, DEVS), d = util.user(local, DEVS);
assertTrue("u can read", u.controlForRef("refs/heads/foo-QA-bar").isVisible());
@@ -317,7 +324,7 @@
@Test
public void testBlockRule_ParentBlocksChild() {
allow(local, PUSH, DEVS, "refs/tags/*");
- block(util.getParentConfig(), PUSH, ANONYMOUS_USERS, "refs/tags/*");
+ block(parent, PUSH, ANONYMOUS_USERS, "refs/tags/*");
ProjectControl u = util.user(local, DEVS);
assertFalse("u can't update tag", u.controlForRef("refs/tags/V10").canUpdate());
}
@@ -326,7 +333,7 @@
public void testBlockRule_ParentBlocksChildEvenIfAlreadyBlockedInChild() {
allow(local, PUSH, DEVS, "refs/tags/*");
block(local, PUSH, ANONYMOUS_USERS, "refs/tags/*");
- block(util.getParentConfig(), PUSH, ANONYMOUS_USERS, "refs/tags/*");
+ block(parent, PUSH, ANONYMOUS_USERS, "refs/tags/*");
ProjectControl u = util.user(local, DEVS);
assertFalse("u can't update tag", u.controlForRef("refs/tags/V10").canUpdate());
@@ -335,7 +342,7 @@
@Test
public void testBlockLabelRange_ParentBlocksChild() {
allow(local, LABEL + "Code-Review", -2, +2, DEVS, "refs/heads/*");
- block(util.getParentConfig(), LABEL + "Code-Review", -2, +2, DEVS, "refs/heads/*");
+ block(parent, LABEL + "Code-Review", -2, +2, DEVS, "refs/heads/*");
ProjectControl u = util.user(local, DEVS);
@@ -350,7 +357,7 @@
public void testBlockLabelRange_ParentBlocksChildEvenIfAlreadyBlockedInChild() {
allow(local, LABEL + "Code-Review", -2, +2, DEVS, "refs/heads/*");
block(local, LABEL + "Code-Review", -2, +2, DEVS, "refs/heads/*");
- block(util.getParentConfig(), LABEL + "Code-Review", -2, +2, DEVS,
+ block(parent, LABEL + "Code-Review", -2, +2, DEVS,
"refs/heads/*");
ProjectControl u = util.user(local, DEVS);
@@ -412,7 +419,7 @@
@Test
public void testUnblockInLocal_Fails() {
- block(util.getParentConfig(), PUSH, ANONYMOUS_USERS, "refs/heads/*");
+ block(parent, PUSH, ANONYMOUS_USERS, "refs/heads/*");
allow(local, PUSH, fixers, "refs/heads/*");
ProjectControl f = util.user(local, fixers);
@@ -421,8 +428,8 @@
@Test
public void testUnblockInParentBlockInLocal() {
- block(util.getParentConfig(), PUSH, ANONYMOUS_USERS, "refs/heads/*");
- allow(util.getParentConfig(), PUSH, DEVS, "refs/heads/*");
+ block(parent, PUSH, ANONYMOUS_USERS, "refs/heads/*");
+ allow(parent, PUSH, DEVS, "refs/heads/*");
block(local, PUSH, DEVS, "refs/heads/*");
ProjectControl d = util.user(local, DEVS);
@@ -440,7 +447,7 @@
@Test
public void testUnblockInLocalVisibilityByRegisteredUsers_Fails() {
- block(util.getParentConfig(), READ, ANONYMOUS_USERS, "refs/heads/*");
+ block(parent, READ, ANONYMOUS_USERS, "refs/heads/*");
allow(local, READ, REGISTERED_USERS, "refs/heads/*");
ProjectControl u = util.user(local, REGISTERED_USERS);
@@ -459,7 +466,7 @@
@Test
public void testUnblockInLocalForceEditTopicName_Fails() {
- block(util.getParentConfig(), EDIT_TOPIC_NAME, ANONYMOUS_USERS, "refs/heads/*");
+ block(parent, EDIT_TOPIC_NAME, ANONYMOUS_USERS, "refs/heads/*");
allow(local, EDIT_TOPIC_NAME, DEVS, "refs/heads/*").setForce(true);
ProjectControl u = util.user(local, REGISTERED_USERS);
@@ -502,7 +509,7 @@
@Test
public void testUnblockInLocalRange_Fails() {
- block(util.getParentConfig(), LABEL + "Code-Review", -1, 1, ANONYMOUS_USERS,
+ block(parent, LABEL + "Code-Review", -1, 1, ANONYMOUS_USERS,
"refs/heads/*");
allow(local, LABEL + "Code-Review", -2, +2, DEVS, "refs/heads/*");
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/project/Util.java b/gerrit-server/src/test/java/com/google/gerrit/server/project/Util.java
index c0f35ba..ac1e0d7 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/project/Util.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/project/Util.java
@@ -180,17 +180,19 @@
private final PermissionCollection.Factory sectionSorter;
private final GitRepositoryManager repoManager;
- private final AllProjectsName allProjectsName = new AllProjectsName("parent");
- private final ProjectConfig parent = new ProjectConfig(allProjectsName);
+ private final AllProjectsName allProjectsName =
+ new AllProjectsName("All-Projects");
+ private final ProjectConfig allProjects;
public Util() {
all = new HashMap<>();
repoManager = new InMemoryRepositoryManager();
try {
Repository repo = repoManager.createRepository(allProjectsName);
- parent.load(repo);
- parent.getLabelSections().put(CR.getName(), CR);
- add(parent);
+ allProjects = new ProjectConfig(new Project.NameKey(allProjectsName.get()));
+ allProjects.load(repo);
+ allProjects.getLabelSections().put(CR.getName(), CR);
+ add(allProjects);
} catch (IOException | ConfigInvalidException e) {
throw new RuntimeException(e);
}
@@ -281,10 +283,6 @@
injector.getInstance(ChangeControl.AssistedFactory.class);
}
- public ProjectConfig getParentConfig() {
- return this.parent;
- }
-
public void add(ProjectConfig pc) {
PrologEnvironment.Factory envFactory = null;
ProjectControl.AssistedFactory projectControlFactory = null;