From b406ec3eb61e4a9f238913b7a69b65bc4c91a5bd Mon Sep 17 00:00:00 2001 From: Florian Scholdei Date: Tue, 4 Jun 2019 14:48:59 +0200 Subject: [PATCH 1/2] fix redirect after delete Repo, Group or User --- scm-ui/src/groups/containers/DeleteGroup.js | 2 +- scm-ui/src/repos/containers/DeleteRepo.js | 2 +- scm-ui/src/users/containers/DeleteUser.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scm-ui/src/groups/containers/DeleteGroup.js b/scm-ui/src/groups/containers/DeleteGroup.js index d497e4434d..be9eae6b8b 100644 --- a/scm-ui/src/groups/containers/DeleteGroup.js +++ b/scm-ui/src/groups/containers/DeleteGroup.js @@ -39,7 +39,7 @@ export class DeleteGroup extends React.Component { }; groupDeleted = () => { - this.props.history.push("/groups"); + this.props.history.push("/groups/"); }; confirmDelete = () => { diff --git a/scm-ui/src/repos/containers/DeleteRepo.js b/scm-ui/src/repos/containers/DeleteRepo.js index aefedef0b4..d528866b06 100644 --- a/scm-ui/src/repos/containers/DeleteRepo.js +++ b/scm-ui/src/repos/containers/DeleteRepo.js @@ -35,7 +35,7 @@ class DeleteRepo extends React.Component { }; deleted = () => { - this.props.history.push("/repos"); + this.props.history.push("/repos/"); }; deleteRepo = () => { diff --git a/scm-ui/src/users/containers/DeleteUser.js b/scm-ui/src/users/containers/DeleteUser.js index b8b42fd9e8..849c18fbee 100644 --- a/scm-ui/src/users/containers/DeleteUser.js +++ b/scm-ui/src/users/containers/DeleteUser.js @@ -35,7 +35,7 @@ class DeleteUser extends React.Component { }; userDeleted = () => { - this.props.history.push("/users"); + this.props.history.push("/users/"); }; deleteUser = () => { From 575a03521f7ba7cc71dfd666ba79575ef52a2ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 6 Jun 2019 08:41:38 +0200 Subject: [PATCH 2/2] Fix group v1 migration with empty group database file --- .../update/group/XmlGroupV1UpdateStep.java | 4 ++- .../sonia/scm/update/UpdateStepTestUtil.java | 13 +++++++- .../group/XmlGroupV1UpdateStepTest.java | 30 +++++++++++++++++++ .../scm/update/group/groups_empty_groups.xml | 6 ++++ .../scm/update/group/groups_no_groups.xml | 5 ++++ 5 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 scm-webapp/src/test/resources/sonia/scm/update/group/groups_empty_groups.xml create mode 100644 scm-webapp/src/test/resources/sonia/scm/update/group/groups_no_groups.xml diff --git a/scm-webapp/src/main/java/sonia/scm/update/group/XmlGroupV1UpdateStep.java b/scm-webapp/src/main/java/sonia/scm/update/group/XmlGroupV1UpdateStep.java index 9622af0f34..7130ead4a9 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/group/XmlGroupV1UpdateStep.java +++ b/scm-webapp/src/main/java/sonia/scm/update/group/XmlGroupV1UpdateStep.java @@ -63,7 +63,9 @@ public class XmlGroupV1UpdateStep implements UpdateStep { return; } XmlGroupV1UpdateStep.V1GroupDatabase v1Database = readV1Database(v1GroupsFile.get()); - v1Database.groupList.groups.forEach(this::update); + if (v1Database.groupList != null && v1Database.groupList.groups != null) { + v1Database.groupList.groups.forEach(this::update); + } } @Override diff --git a/scm-webapp/src/test/java/sonia/scm/update/UpdateStepTestUtil.java b/scm-webapp/src/test/java/sonia/scm/update/UpdateStepTestUtil.java index 88b09fc086..8326e6d255 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/UpdateStepTestUtil.java +++ b/scm-webapp/src/test/java/sonia/scm/update/UpdateStepTestUtil.java @@ -47,6 +47,12 @@ private final SCMContextProvider contextProvider; 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 getStoreForConfigFile(String name) { return storeFactory .withType(AssignedPermission.class) @@ -59,7 +65,12 @@ private final SCMContextProvider contextProvider; } 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); - Files.copy(url.openStream(), configDir.resolve(Paths.get(fileName).getFileName())); + Files.copy(url.openStream(), configDir.resolve(targetFileName)); } } diff --git a/scm-webapp/src/test/java/sonia/scm/update/group/XmlGroupV1UpdateStepTest.java b/scm-webapp/src/test/java/sonia/scm/update/group/XmlGroupV1UpdateStepTest.java index 394dc44109..6dee5fd5c1 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/group/XmlGroupV1UpdateStepTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/group/XmlGroupV1UpdateStepTest.java @@ -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 void shouldNotFailForMissingConfigDir() throws JAXBException { updateStep.doUpdate(); diff --git a/scm-webapp/src/test/resources/sonia/scm/update/group/groups_empty_groups.xml b/scm-webapp/src/test/resources/sonia/scm/update/group/groups_empty_groups.xml new file mode 100644 index 0000000000..c5f82daaa6 --- /dev/null +++ b/scm-webapp/src/test/resources/sonia/scm/update/group/groups_empty_groups.xml @@ -0,0 +1,6 @@ + + + 1558006904769 + + 1558007174172 + diff --git a/scm-webapp/src/test/resources/sonia/scm/update/group/groups_no_groups.xml b/scm-webapp/src/test/resources/sonia/scm/update/group/groups_no_groups.xml new file mode 100644 index 0000000000..8014b299cc --- /dev/null +++ b/scm-webapp/src/test/resources/sonia/scm/update/group/groups_no_groups.xml @@ -0,0 +1,5 @@ + + + 1558006904769 + 1558007174172 +