mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
Fix group v1 migration with empty group database file
This commit is contained in:
@@ -63,8 +63,10 @@ public class XmlGroupV1UpdateStep implements UpdateStep {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
XmlGroupV1UpdateStep.V1GroupDatabase v1Database = readV1Database(v1GroupsFile.get());
|
XmlGroupV1UpdateStep.V1GroupDatabase v1Database = readV1Database(v1GroupsFile.get());
|
||||||
|
if (v1Database.groupList != null && v1Database.groupList.groups != null) {
|
||||||
v1Database.groupList.groups.forEach(this::update);
|
v1Database.groupList.groups.forEach(this::update);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Version getTargetVersion() {
|
public Version getTargetVersion() {
|
||||||
|
|||||||
@@ -47,6 +47,12 @@ private final SCMContextProvider contextProvider;
|
|||||||
copyTestDatabaseFile(configDir, fileName);
|
copyTestDatabaseFile(configDir, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void copyConfigFile(String fileName, String targetFileName) throws IOException {
|
||||||
|
Path configDir = tempDir.resolve("config");
|
||||||
|
Files.createDirectories(configDir);
|
||||||
|
copyTestDatabaseFile(configDir, fileName, targetFileName);
|
||||||
|
}
|
||||||
|
|
||||||
public ConfigurationEntryStore<AssignedPermission> getStoreForConfigFile(String name) {
|
public ConfigurationEntryStore<AssignedPermission> getStoreForConfigFile(String name) {
|
||||||
return storeFactory
|
return storeFactory
|
||||||
.withType(AssignedPermission.class)
|
.withType(AssignedPermission.class)
|
||||||
@@ -59,7 +65,12 @@ private final SCMContextProvider contextProvider;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void copyTestDatabaseFile(Path configDir, String fileName) throws IOException {
|
private void copyTestDatabaseFile(Path configDir, String fileName) throws IOException {
|
||||||
|
Path targetFileName = Paths.get(fileName).getFileName();
|
||||||
|
copyTestDatabaseFile(configDir, fileName, targetFileName.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void copyTestDatabaseFile(Path configDir, String fileName, String targetFileName) throws IOException {
|
||||||
URL url = Resources.getResource(fileName);
|
URL url = Resources.getResource(fileName);
|
||||||
Files.copy(url.openStream(), configDir.resolve(Paths.get(fileName).getFileName()));
|
Files.copy(url.openStream(), configDir.resolve(targetFileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,36 @@ class XmlGroupV1UpdateStepTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
class WithExistingDatabaseWithEmptyList {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void createGroupV1XML() throws IOException {
|
||||||
|
testUtil.copyConfigFile("sonia/scm/update/group/groups_empty_groups.xml", "groups.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldCreateNewGroupFromGroupsV1Xml() throws JAXBException {
|
||||||
|
updateStep.doUpdate();
|
||||||
|
verify(groupDAO, times(0)).add(any());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
class WithExistingDatabaseWithoutList {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void createGroupV1XML() throws IOException {
|
||||||
|
testUtil.copyConfigFile("sonia/scm/update/group/groups_no_groups.xml", "groups.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldCreateNewGroupFromGroupsV1Xml() throws JAXBException {
|
||||||
|
updateStep.doUpdate();
|
||||||
|
verify(groupDAO, times(0)).add(any());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldNotFailForMissingConfigDir() throws JAXBException {
|
void shouldNotFailForMissingConfigDir() throws JAXBException {
|
||||||
updateStep.doUpdate();
|
updateStep.doUpdate();
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<group-db>
|
||||||
|
<creationTime>1558006904769</creationTime>
|
||||||
|
<groups/>
|
||||||
|
<lastModified>1558007174172</lastModified>
|
||||||
|
</group-db>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<group-db>
|
||||||
|
<creationTime>1558006904769</creationTime>
|
||||||
|
<lastModified>1558007174172</lastModified>
|
||||||
|
</group-db>
|
||||||
Reference in New Issue
Block a user