Merge "GroupsIT: Don't create group branches manually"
This commit is contained in:
@@ -884,9 +884,9 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pushToGroupBranchIsRejectedForAllUsersRepo() throws Exception {
|
public void pushToGroupBranchIsRejectedForAllUsersRepo() throws Exception {
|
||||||
String groupRef =
|
assume().that(groupsInNoteDb()).isTrue(); // branch only exists when groups are in NoteDb
|
||||||
RefNames.refsGroups(new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
assertPushToGroupBranch(
|
||||||
assertPushToGroupBranch(allUsers, groupRef, !groupsInNoteDb(), "group update not allowed");
|
allUsers, RefNames.refsGroups(adminGroupUuid()), "group update not allowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -894,7 +894,8 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
String groupRef =
|
String groupRef =
|
||||||
RefNames.refsDeletedGroups(
|
RefNames.refsDeletedGroups(
|
||||||
new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
||||||
assertPushToGroupBranch(allUsers, groupRef, true, "group update not allowed");
|
createBranch(allUsers, groupRef);
|
||||||
|
assertPushToGroupBranch(allUsers, groupRef, "group update not allowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -902,7 +903,7 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
assume().that(groupsInNoteDb()).isTrue(); // branch only exists when groups are in NoteDb
|
assume().that(groupsInNoteDb()).isTrue(); // branch only exists when groups are in NoteDb
|
||||||
// refs/meta/group-names isn't usually available for fetch, so grant ACCESS_DATABASE
|
// refs/meta/group-names isn't usually available for fetch, so grant ACCESS_DATABASE
|
||||||
allowGlobalCapabilities(REGISTERED_USERS, GlobalCapability.ACCESS_DATABASE);
|
allowGlobalCapabilities(REGISTERED_USERS, GlobalCapability.ACCESS_DATABASE);
|
||||||
assertPushToGroupBranch(allUsers, RefNames.REFS_GROUPNAMES, false, "group update not allowed");
|
assertPushToGroupBranch(allUsers, RefNames.REFS_GROUPNAMES, "group update not allowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -910,7 +911,8 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
assertCreateGroupBranch(project, null);
|
assertCreateGroupBranch(project, null);
|
||||||
String groupRef =
|
String groupRef =
|
||||||
RefNames.refsGroups(new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
RefNames.refsGroups(new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
||||||
assertPushToGroupBranch(project, groupRef, true, null);
|
createBranch(project, groupRef);
|
||||||
|
assertPushToGroupBranch(project, groupRef, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -919,17 +921,18 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
String groupRef =
|
String groupRef =
|
||||||
RefNames.refsDeletedGroups(
|
RefNames.refsDeletedGroups(
|
||||||
new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
new AccountGroup.UUID(gApi.groups().create(name("foo")).get().id));
|
||||||
assertPushToGroupBranch(project, groupRef, true, null);
|
createBranch(project, groupRef);
|
||||||
|
assertPushToGroupBranch(project, groupRef, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pushToGroupNamesBranchForNonAllUsersRepo() throws Exception {
|
public void pushToGroupNamesBranchForNonAllUsersRepo() throws Exception {
|
||||||
assertPushToGroupBranch(project, RefNames.REFS_GROUPNAMES, true, null);
|
createBranch(project, RefNames.REFS_GROUPNAMES);
|
||||||
|
assertPushToGroupBranch(project, RefNames.REFS_GROUPNAMES, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertPushToGroupBranch(
|
private void assertPushToGroupBranch(
|
||||||
Project.NameKey project, String groupRefName, boolean createRef, String expectedErrorOnUpdate)
|
Project.NameKey project, String groupRefName, String expectedErrorOnUpdate) throws Exception {
|
||||||
throws Exception {
|
|
||||||
grant(project, RefNames.REFS_GROUPS + "*", Permission.CREATE, false, REGISTERED_USERS);
|
grant(project, RefNames.REFS_GROUPS + "*", Permission.CREATE, false, REGISTERED_USERS);
|
||||||
grant(project, RefNames.REFS_GROUPS + "*", Permission.PUSH, false, REGISTERED_USERS);
|
grant(project, RefNames.REFS_GROUPS + "*", Permission.PUSH, false, REGISTERED_USERS);
|
||||||
grant(project, RefNames.REFS_DELETED_GROUPS + "*", Permission.CREATE, false, REGISTERED_USERS);
|
grant(project, RefNames.REFS_DELETED_GROUPS + "*", Permission.CREATE, false, REGISTERED_USERS);
|
||||||
@@ -938,10 +941,6 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
TestRepository<InMemoryRepository> repo = cloneProject(project);
|
TestRepository<InMemoryRepository> repo = cloneProject(project);
|
||||||
|
|
||||||
if (createRef) {
|
|
||||||
createGroupBranch(project, groupRefName);
|
|
||||||
}
|
|
||||||
|
|
||||||
// update existing branch
|
// update existing branch
|
||||||
fetch(repo, groupRefName + ":groupRef");
|
fetch(repo, groupRefName + ":groupRef");
|
||||||
repo.reset("groupRef");
|
repo.reset("groupRef");
|
||||||
@@ -987,12 +986,15 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pushToGroupBranchForReviewForAllUsersRepoIsRejectedOnSubmit() throws Exception {
|
public void pushToGroupBranchForReviewForAllUsersRepoIsRejectedOnSubmit() throws Exception {
|
||||||
pushToGroupBranchForReviewAndSubmit(allUsers, "group update not allowed");
|
pushToGroupBranchForReviewAndSubmit(
|
||||||
|
allUsers, RefNames.refsGroups(adminGroupUuid()), "group update not allowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pushToGroupBranchForReviewForNonAllUsersRepoAndSubmit() throws Exception {
|
public void pushToGroupBranchForReviewForNonAllUsersRepoAndSubmit() throws Exception {
|
||||||
pushToGroupBranchForReviewAndSubmit(project, null);
|
String groupRef = RefNames.refsGroups(adminGroupUuid());
|
||||||
|
createBranch(project, groupRef);
|
||||||
|
pushToGroupBranchForReviewAndSubmit(project, groupRef, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -1081,7 +1083,7 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
@Sandboxed
|
@Sandboxed
|
||||||
public void cannotDeleteDeletedGroupBranch() throws Exception {
|
public void cannotDeleteDeletedGroupBranch() throws Exception {
|
||||||
String groupRef = RefNames.refsDeletedGroups(new AccountGroup.UUID(name("foo")));
|
String groupRef = RefNames.refsDeletedGroups(new AccountGroup.UUID(name("foo")));
|
||||||
createBranch(allUsers, groupRef, "Foo");
|
createBranch(allUsers, groupRef);
|
||||||
testCannotDeleteGroupBranch(RefNames.REFS_DELETED_GROUPS + "*", groupRef);
|
testCannotDeleteGroupBranch(RefNames.REFS_DELETED_GROUPS + "*", groupRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1197,25 +1199,25 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
assertThat(stalenessChecker.isStale(groupUuid)).isFalse();
|
assertThat(stalenessChecker.isStale(groupUuid)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushToGroupBranchForReviewAndSubmit(Project.NameKey project, String expectedError)
|
private void pushToGroupBranchForReviewAndSubmit(
|
||||||
throws Exception {
|
Project.NameKey project, String groupRef, String expectedError) throws Exception {
|
||||||
|
assume().that(groupsInNoteDb()).isTrue(); // branch only exists when groups are in NoteDb
|
||||||
|
|
||||||
grantLabel(
|
grantLabel(
|
||||||
"Code-Review", -2, 2, project, RefNames.REFS_GROUPS + "*", false, REGISTERED_USERS, false);
|
"Code-Review", -2, 2, project, RefNames.REFS_GROUPS + "*", false, REGISTERED_USERS, false);
|
||||||
grant(project, RefNames.REFS_GROUPS + "*", Permission.SUBMIT, false, REGISTERED_USERS);
|
grant(project, RefNames.REFS_GROUPS + "*", Permission.SUBMIT, false, REGISTERED_USERS);
|
||||||
|
|
||||||
String groupRefName = RefNames.REFS_GROUPS + name("foo");
|
|
||||||
createGroupBranch(project, groupRefName);
|
|
||||||
TestRepository<InMemoryRepository> repo = cloneProject(project);
|
TestRepository<InMemoryRepository> repo = cloneProject(project);
|
||||||
fetch(repo, groupRefName + ":groupRef");
|
fetch(repo, groupRef + ":groupRef");
|
||||||
repo.reset("groupRef");
|
repo.reset("groupRef");
|
||||||
|
|
||||||
PushOneCommit.Result r =
|
PushOneCommit.Result r =
|
||||||
pushFactory
|
pushFactory
|
||||||
.create(
|
.create(
|
||||||
db, admin.getIdent(), repo, "Update group config", "group.config", "some content")
|
db, admin.getIdent(), repo, "Update group config", "group.config", "some content")
|
||||||
.to(MagicBranch.NEW_CHANGE + groupRefName);
|
.to(MagicBranch.NEW_CHANGE + groupRef);
|
||||||
r.assertOkStatus();
|
r.assertOkStatus();
|
||||||
assertThat(r.getChange().change().getDest().get()).isEqualTo(groupRefName);
|
assertThat(r.getChange().change().getDest().get()).isEqualTo(groupRef);
|
||||||
gApi.changes().id(r.getChangeId()).current().review(ReviewInput.approve());
|
gApi.changes().id(r.getChangeId()).current().review(ReviewInput.approve());
|
||||||
|
|
||||||
if (expectedError != null) {
|
if (expectedError != null) {
|
||||||
@@ -1225,16 +1227,11 @@ public class GroupsIT extends AbstractDaemonTest {
|
|||||||
gApi.changes().id(r.getChangeId()).current().submit();
|
gApi.changes().id(r.getChangeId()).current().submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createGroupBranch(Project.NameKey project, String ref) throws IOException {
|
private void createBranch(Project.NameKey project, String ref) throws IOException {
|
||||||
createBranch(project, ref, "Create Group");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createBranch(Project.NameKey project, String ref, String commitMessage)
|
|
||||||
throws IOException {
|
|
||||||
try (Repository r = repoManager.openRepository(project);
|
try (Repository r = repoManager.openRepository(project);
|
||||||
ObjectInserter oi = r.newObjectInserter();
|
ObjectInserter oi = r.newObjectInserter();
|
||||||
RevWalk rw = new RevWalk(r)) {
|
RevWalk rw = new RevWalk(r)) {
|
||||||
ObjectId emptyCommit = createCommit(r, commitMessage);
|
ObjectId emptyCommit = createCommit(r, "Test change");
|
||||||
RefUpdate updateRef = r.updateRef(ref);
|
RefUpdate updateRef = r.updateRef(ref);
|
||||||
updateRef.setExpectedOldObjectId(ObjectId.zeroId());
|
updateRef.setExpectedOldObjectId(ObjectId.zeroId());
|
||||||
updateRef.setNewObjectId(emptyCommit);
|
updateRef.setNewObjectId(emptyCommit);
|
||||||
|
Reference in New Issue
Block a user