Merge "ProjectConfig: Write resolved groups to file"

This commit is contained in:
Patrick Hiesel
2020-11-23 08:49:14 +00:00
committed by Gerrit Code Review
2 changed files with 33 additions and 2 deletions

View File

@@ -1425,7 +1425,7 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
if (group.getUUID() != null) {
keepGroups.add(group.getUUID());
}
rules.add(rule.asString(needRange));
rules.add(rule.toBuilder().setGroup(group).build().asString(needRange));
}
rc.setStringList(CAPABILITY, null, permission.getName(), rules);
}
@@ -1470,7 +1470,7 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
if (group.getUUID() != null) {
keepGroups.add(group.getUUID());
}
rules.add(rule.asString(needRange));
rules.add(rule.toBuilder().setGroup(group).build().asString(needRange));
}
rc.setStringList(ACCESS, refName, permission.getName(), rules);
}

View File

@@ -113,6 +113,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Stream;
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
import org.eclipse.jgit.junit.TestRepository;
@@ -703,6 +704,36 @@ public class GroupsIT extends AbstractDaemonTest {
assertThat(group2.id).isNotEqualTo(group1.id);
}
@Test
public void renamingGroupChangesProjectConfigs() throws Exception {
String name = name("Name1");
GroupInfo group = gApi.groups().create(name).get();
// Use group in a permission
projectOperations
.project(project)
.forUpdate()
.add(allow(Permission.READ).ref(RefNames.REFS_CONFIG).group(AccountGroup.uuid(group.id)))
.update();
Optional<String> beforeRename =
projectCache.get(project).get().getLocalGroups().stream()
.filter(g -> g.getUUID().get().equals(group.id))
.map(GroupReference::getName)
.findAny();
// Groups created with ProjectOperations always have their UUID as local name
assertThat(beforeRename).hasValue(group.id);
String newName = name("Name2");
gApi.groups().id(name).name(newName);
Optional<String> afterRename =
projectCache.get(project).get().getLocalGroups().stream()
.filter(g -> g.getUUID().get().equals(group.id))
.map(GroupReference::getName)
.findAny();
assertThat(afterRename).hasValue(newName);
}
@Test
public void groupDescription() throws Exception {
String name = name("group");