mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 17:26:22 +01:00
Extract common code
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package sonia.scm.update;
|
||||
|
||||
import com.google.common.io.Resources;
|
||||
import org.mockito.Mockito;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.security.AssignedPermission;
|
||||
import sonia.scm.security.DefaultKeyGenerator;
|
||||
import sonia.scm.store.ConfigurationEntryStore;
|
||||
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.JAXBConfigurationEntryStoreFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class UpdateStepTestUtil {
|
||||
|
||||
private final SCMContextProvider contextProvider;
|
||||
|
||||
private final Path tempDir;
|
||||
private final ConfigurationEntryStoreFactory storeFactory;
|
||||
|
||||
public UpdateStepTestUtil(Path tempDir) {
|
||||
this.tempDir = tempDir;
|
||||
contextProvider = Mockito.mock(SCMContextProvider.class);
|
||||
storeFactory = new JAXBConfigurationEntryStoreFactory(contextProvider, null, new DefaultKeyGenerator());
|
||||
when(contextProvider.getBaseDirectory()).thenReturn(tempDir.toFile());
|
||||
}
|
||||
|
||||
public SCMContextProvider getContextProvider() {
|
||||
return contextProvider;
|
||||
}
|
||||
|
||||
public ConfigurationEntryStoreFactory getStoreFactory() {
|
||||
return storeFactory;
|
||||
}
|
||||
|
||||
public void copyConfigFile(String fileName) throws IOException {
|
||||
Path configDir = tempDir.resolve("config");
|
||||
Files.createDirectories(configDir);
|
||||
copyTestDatabaseFile(configDir, fileName);
|
||||
}
|
||||
|
||||
public ConfigurationEntryStore<AssignedPermission> getStoreForConfigFile(String name) {
|
||||
return storeFactory
|
||||
.withType(AssignedPermission.class)
|
||||
.withName(name)
|
||||
.build();
|
||||
}
|
||||
|
||||
public Path getFile(String name) {
|
||||
return tempDir.resolve("config").resolve(name);
|
||||
}
|
||||
|
||||
private void copyTestDatabaseFile(Path configDir, String fileName) throws IOException {
|
||||
URL url = Resources.getResource(fileName);
|
||||
Files.copy(url.openStream(), configDir.resolve(Paths.get(fileName).getFileName()));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package sonia.scm.group.update;
|
||||
package sonia.scm.update.group;
|
||||
|
||||
import com.google.common.io.Resources;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -10,17 +9,12 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.group.Group;
|
||||
import sonia.scm.group.xml.XmlGroupDAO;
|
||||
import sonia.scm.security.DefaultKeyGenerator;
|
||||
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.JAXBConfigurationEntryStoreFactory;
|
||||
import sonia.scm.update.UpdateStepTestUtil;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -31,14 +25,11 @@ import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@ExtendWith(TempDirectory.class)
|
||||
class XmlGroupV1UpdateStepTest {
|
||||
|
||||
@Mock
|
||||
SCMContextProvider contextProvider;
|
||||
@Mock
|
||||
XmlGroupDAO groupDAO;
|
||||
|
||||
@@ -47,13 +38,13 @@ class XmlGroupV1UpdateStepTest {
|
||||
|
||||
XmlGroupV1UpdateStep updateStep;
|
||||
|
||||
ConfigurationEntryStoreFactory storeFactory;
|
||||
private UpdateStepTestUtil testUtil;
|
||||
|
||||
|
||||
@BeforeEach
|
||||
void mockScmHome(@TempDirectory.TempDir Path tempDir) {
|
||||
when(contextProvider.getBaseDirectory()).thenReturn(tempDir.toFile());
|
||||
storeFactory = new JAXBConfigurationEntryStoreFactory(contextProvider, null, new DefaultKeyGenerator());
|
||||
updateStep = new XmlGroupV1UpdateStep(contextProvider, groupDAO, storeFactory);
|
||||
testUtil = new UpdateStepTestUtil(tempDir);
|
||||
updateStep = new XmlGroupV1UpdateStep(testUtil.getContextProvider(), groupDAO, testUtil.getStoreFactory());
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -65,10 +56,8 @@ class XmlGroupV1UpdateStepTest {
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void createGroupV1XML(@TempDirectory.TempDir Path tempDir) throws IOException {
|
||||
Path configDir = tempDir.resolve("config");
|
||||
Files.createDirectories(configDir);
|
||||
copyTestDatabaseFile(configDir, "groups.xml");
|
||||
void createGroupV1XML() throws IOException {
|
||||
testUtil.copyConfigFile("sonia/scm/update/group/groups.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -92,9 +81,9 @@ class XmlGroupV1UpdateStepTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExtractProperties(@TempDirectory.TempDir Path tempDir) throws JAXBException {
|
||||
void shouldExtractProperties() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
Path propertiesFile = tempDir.resolve("config").resolve("group-properties-v1.xml");
|
||||
Path propertiesFile = testUtil.getFile("group-properties-v1.xml");
|
||||
assertThat(propertiesFile)
|
||||
.exists();
|
||||
assertThat(linesOf(propertiesFile.toFile()))
|
||||
@@ -110,11 +99,6 @@ class XmlGroupV1UpdateStepTest {
|
||||
}
|
||||
}
|
||||
|
||||
private void copyTestDatabaseFile(Path configDir, String groupsFileName) throws IOException {
|
||||
URL url = Resources.getResource("sonia/scm/group/update/" + groupsFileName);
|
||||
Files.copy(url.openStream(), configDir.resolve(groupsFileName));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotFailForMissingConfigDir() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@@ -11,13 +11,15 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.store.ConfigurationStoreFactory;
|
||||
import sonia.scm.store.JAXBConfigurationStoreFactory;
|
||||
import sonia.scm.update.repository.MigrationStrategy;
|
||||
import sonia.scm.update.repository.MigrationStrategyDao;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.mockito.Mockito.when;
|
||||
import static sonia.scm.repository.update.MigrationStrategy.INLINE;
|
||||
import static sonia.scm.update.repository.MigrationStrategy.INLINE;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@ExtendWith(TempDirectory.class)
|
||||
@@ -1,7 +1,7 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import com.google.inject.Injector;
|
||||
import sonia.scm.repository.update.MigrationStrategy.Instance;
|
||||
import sonia.scm.update.repository.MigrationStrategy.Instance;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import sonia.scm.repository.spi.ZippedRepositoryTestBase;
|
||||
|
||||
@@ -62,6 +62,6 @@ class V1RepositoryFileSystem {
|
||||
* </pre>
|
||||
*/
|
||||
static void createV1Home(Path tempDir) throws IOException {
|
||||
ZippedRepositoryTestBase.extract(tempDir.toFile(), "sonia/scm/repository/update/scm-home.v1.zip");
|
||||
ZippedRepositoryTestBase.extract(tempDir.toFile(), "sonia/scm/update/repository/scm-home.v1.zip");
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import com.google.common.io.Resources;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@@ -31,7 +31,7 @@ class XmlRepositoryFileNameUpdateStepTest {
|
||||
@Test
|
||||
void shouldCopyRepositoriesFileToRepositoryPathsFile(@TempDirectory.TempDir Path tempDir) throws JAXBException, IOException {
|
||||
XmlRepositoryFileNameUpdateStep updateStep = new XmlRepositoryFileNameUpdateStep(contextProvider);
|
||||
URL url = Resources.getResource("sonia/scm/repository/update/formerV2RepositoryFile.xml");
|
||||
URL url = Resources.getResource("sonia/scm/update/repository/formerV2RepositoryFile.xml");
|
||||
Path configDir = tempDir.resolve("config");
|
||||
Files.createDirectories(configDir);
|
||||
Files.copy(url.openStream(), configDir.resolve("repositories.xml"));
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.repository.update;
|
||||
package sonia.scm.update.repository;
|
||||
|
||||
import com.google.common.io.Resources;
|
||||
import com.google.inject.Injector;
|
||||
@@ -36,9 +36,9 @@ import static org.mockito.Mockito.lenient;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static sonia.scm.repository.update.MigrationStrategy.COPY;
|
||||
import static sonia.scm.repository.update.MigrationStrategy.INLINE;
|
||||
import static sonia.scm.repository.update.MigrationStrategy.MOVE;
|
||||
import static sonia.scm.update.repository.MigrationStrategy.COPY;
|
||||
import static sonia.scm.update.repository.MigrationStrategy.INLINE;
|
||||
import static sonia.scm.update.repository.MigrationStrategy.MOVE;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@ExtendWith(TempDirectory.class)
|
||||
@@ -226,7 +226,7 @@ class XmlRepositoryV1UpdateStepTest {
|
||||
}
|
||||
|
||||
private void createFormerV2RepositoriesFile(@TempDirectory.TempDir Path tempDir) throws IOException {
|
||||
URL url = Resources.getResource("sonia/scm/repository/update/formerV2RepositoryFile.xml");
|
||||
URL url = Resources.getResource("sonia/scm/update/repository/formerV2RepositoryFile.xml");
|
||||
Path configDir = tempDir.resolve("config");
|
||||
Files.createDirectories(configDir);
|
||||
Files.copy(url.openStream(), configDir.resolve("repositories.xml"));
|
||||
@@ -1,4 +1,4 @@
|
||||
package sonia.scm.security.update;
|
||||
package sonia.scm.update.security;
|
||||
|
||||
import com.google.common.io.Resources;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@@ -14,6 +14,7 @@ import sonia.scm.store.ConfigurationEntryStore;
|
||||
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStore;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.update.security.XmlSecurityV1UpdateStep;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
@@ -82,7 +83,7 @@ class XmlSecurityV1UpdateStepTest {
|
||||
}
|
||||
|
||||
private void copyTestDatabaseFile(Path configDir, String fileName) throws IOException {
|
||||
URL url = Resources.getResource("sonia/scm/security/update/" + fileName);
|
||||
URL url = Resources.getResource("sonia/scm/update/security/" + fileName);
|
||||
Files.copy(url.openStream(), configDir.resolve(fileName));
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package sonia.scm.user.update;
|
||||
package sonia.scm.update.user;
|
||||
|
||||
import com.google.common.io.Resources;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -10,18 +9,13 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.security.AssignedPermission;
|
||||
import sonia.scm.security.DefaultKeyGenerator;
|
||||
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.JAXBConfigurationEntryStoreFactory;
|
||||
import sonia.scm.update.UpdateStepTestUtil;
|
||||
import sonia.scm.user.User;
|
||||
import sonia.scm.user.xml.XmlUserDAO;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -31,14 +25,11 @@ import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@ExtendWith(TempDirectory.class)
|
||||
class XmlUserV1UpdateStepTest {
|
||||
|
||||
@Mock
|
||||
SCMContextProvider contextProvider;
|
||||
@Mock
|
||||
XmlUserDAO userDAO;
|
||||
|
||||
@@ -47,13 +38,12 @@ class XmlUserV1UpdateStepTest {
|
||||
|
||||
XmlUserV1UpdateStep updateStep;
|
||||
|
||||
ConfigurationEntryStoreFactory storeFactory;
|
||||
private UpdateStepTestUtil testUtil;
|
||||
|
||||
@BeforeEach
|
||||
void mockScmHome(@TempDirectory.TempDir Path tempDir) {
|
||||
when(contextProvider.getBaseDirectory()).thenReturn(tempDir.toFile());
|
||||
storeFactory = new JAXBConfigurationEntryStoreFactory(contextProvider, null, new DefaultKeyGenerator());
|
||||
updateStep = new XmlUserV1UpdateStep(contextProvider, userDAO, storeFactory);
|
||||
testUtil = new UpdateStepTestUtil(tempDir);
|
||||
updateStep = new XmlUserV1UpdateStep(testUtil.getContextProvider(), userDAO, testUtil.getStoreFactory());
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -65,20 +55,15 @@ class XmlUserV1UpdateStepTest {
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void createUserV1XML(@TempDirectory.TempDir Path tempDir) throws IOException {
|
||||
Path configDir = tempDir.resolve("config");
|
||||
Files.createDirectories(configDir);
|
||||
copyTestDatabaseFile(configDir, "users.xml");
|
||||
void createUserV1XML() throws IOException {
|
||||
testUtil.copyConfigFile("sonia/scm/update/user/users.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldCreateNewPermissionsForV1AdminUser() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
Optional<AssignedPermission> assignedPermission =
|
||||
storeFactory
|
||||
.withType(AssignedPermission.class)
|
||||
.withName("security")
|
||||
.build()
|
||||
testUtil.getStoreForConfigFile("security")
|
||||
.getAll()
|
||||
.values()
|
||||
.stream()
|
||||
@@ -111,9 +96,9 @@ class XmlUserV1UpdateStepTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExtractProperties(@TempDirectory.TempDir Path tempDir) throws JAXBException {
|
||||
void shouldExtractProperties() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
Path propertiesFile = tempDir.resolve("config").resolve("user-properties-v1.xml");
|
||||
Path propertiesFile = testUtil.getFile("user-properties-v1.xml");
|
||||
assertThat(propertiesFile)
|
||||
.exists();
|
||||
assertThat(linesOf(propertiesFile.toFile()))
|
||||
@@ -133,11 +118,6 @@ class XmlUserV1UpdateStepTest {
|
||||
}
|
||||
}
|
||||
|
||||
private void copyTestDatabaseFile(Path configDir, String usersFileName) throws IOException {
|
||||
URL url = Resources.getResource("sonia/scm/user/update/" + usersFileName);
|
||||
Files.copy(url.openStream(), configDir.resolve(usersFileName));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotFailForMissingConfigDir() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
Reference in New Issue
Block a user