mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-07-08 15:03:05 +02:00
fix permission reference on clone repositories
This commit is contained in:
@@ -82,7 +82,7 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
||||
private String namespace;
|
||||
private String name;
|
||||
@XmlElement(name = "permission")
|
||||
private final Set<RepositoryPermission> permissions = new HashSet<>();
|
||||
private Set<RepositoryPermission> permissions = new HashSet<>();
|
||||
@XmlElement(name = "public")
|
||||
private boolean publicReadable = false;
|
||||
private boolean archived = false;
|
||||
@@ -331,6 +331,8 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
||||
|
||||
try {
|
||||
repository = (Repository) super.clone();
|
||||
// fix permission reference on clone
|
||||
repository.permissions = new HashSet<>(permissions);
|
||||
} catch (CloneNotSupportedException ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package sonia.scm.repository;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class RepositoryTest {
|
||||
|
||||
@Test
|
||||
void shouldCreateNewPermissionOnClone() {
|
||||
Repository repository = new Repository();
|
||||
repository.setPermissions(Arrays.asList(new RepositoryPermission("one", "role", false)));
|
||||
|
||||
Repository cloned = repository.clone();
|
||||
cloned.setPermissions(Arrays.asList(new RepositoryPermission("two", "role", false)));
|
||||
|
||||
assertThat(repository.getPermissions()).extracting(r -> r.getName()).containsOnly("one");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user