Merge "GrantRevertPermission only adds the permisions once" into stable-3.2
This commit is contained in:
@@ -18,6 +18,7 @@ import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS
|
||||
import static com.google.gerrit.server.schema.AclUtil.grant;
|
||||
|
||||
import com.google.gerrit.common.data.AccessSection;
|
||||
import com.google.gerrit.common.data.GroupReference;
|
||||
import com.google.gerrit.common.data.Permission;
|
||||
import com.google.gerrit.entities.Project;
|
||||
import com.google.gerrit.server.GerritPersonIdent;
|
||||
@@ -57,12 +58,18 @@ public class GrantRevertPermission {
|
||||
}
|
||||
|
||||
public void execute(Project.NameKey projectName) throws IOException, ConfigInvalidException {
|
||||
GroupReference registeredUsers = systemGroupBackend.getGroup(REGISTERED_USERS);
|
||||
try (Repository repo = repoManager.openRepository(projectName)) {
|
||||
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, projectName, repo);
|
||||
ProjectConfig projectConfig = projectConfigFactory.read(md);
|
||||
AccessSection heads = projectConfig.getAccessSection(AccessSection.HEADS, true);
|
||||
|
||||
grant(projectConfig, heads, Permission.REVERT, systemGroupBackend.getGroup(REGISTERED_USERS));
|
||||
Permission permission = heads.getPermission(Permission.REVERT);
|
||||
if (permission != null && permission.getRule(registeredUsers) != null) {
|
||||
// permission already exists, don't do anything.
|
||||
return;
|
||||
}
|
||||
grant(projectConfig, heads, Permission.REVERT, registeredUsers);
|
||||
|
||||
md.getCommitBuilder().setAuthor(serverUser);
|
||||
md.getCommitBuilder().setCommitter(serverUser);
|
||||
|
||||
@@ -52,6 +52,8 @@ import com.google.gerrit.extensions.restapi.BadRequestException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
import com.google.gerrit.extensions.webui.FileHistoryWebLink;
|
||||
import com.google.gerrit.server.config.AllProjectsNameProvider;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.git.meta.MetaDataUpdate;
|
||||
import com.google.gerrit.server.group.SystemGroupBackend;
|
||||
import com.google.gerrit.server.project.ProjectConfig;
|
||||
import com.google.gerrit.server.schema.GrantRevertPermission;
|
||||
@@ -91,20 +93,35 @@ public class AccessIT extends AbstractDaemonTest {
|
||||
@Test
|
||||
public void grantRevertPermission() throws Exception {
|
||||
String ref = "refs/heads/*";
|
||||
String permissionName = "revert";
|
||||
String groupId = "global:Registered-Users";
|
||||
|
||||
grantRevertPermission.execute(newProjectName);
|
||||
|
||||
ProjectAccessInfo info = pApi().access();
|
||||
assertThat(info.local.containsKey(ref)).isTrue();
|
||||
AccessSectionInfo accessSectionInfo = info.local.get(ref);
|
||||
assertThat(accessSectionInfo.permissions.containsKey(permissionName)).isTrue();
|
||||
PermissionInfo permissionInfo = accessSectionInfo.permissions.get(permissionName);
|
||||
assertThat(accessSectionInfo.permissions.containsKey(Permission.REVERT)).isTrue();
|
||||
PermissionInfo permissionInfo = accessSectionInfo.permissions.get(Permission.REVERT);
|
||||
assertThat(permissionInfo.rules.containsKey(groupId)).isTrue();
|
||||
PermissionRuleInfo permissionRuleInfo = permissionInfo.rules.get(groupId);
|
||||
assertThat(permissionRuleInfo.action).isEqualTo(PermissionRuleInfo.Action.ALLOW);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void grantRevertPermissionOnlyWorksOnce() throws Exception {
|
||||
grantRevertPermission.execute(newProjectName);
|
||||
grantRevertPermission.execute(newProjectName);
|
||||
|
||||
try (Repository repo = repoManager.openRepository(newProjectName)) {
|
||||
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, newProjectName, repo);
|
||||
ProjectConfig projectConfig = projectConfigFactory.read(md);
|
||||
AccessSection heads = projectConfig.getAccessSection(AccessSection.HEADS, true);
|
||||
|
||||
Permission permission = heads.getPermission(Permission.REVERT);
|
||||
assertThat(permission.getRules()).hasSize(1);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDefaultInheritance() throws Exception {
|
||||
String inheritedName = pApi().access().inheritsFrom.name;
|
||||
|
||||
Reference in New Issue
Block a user