mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-07-02 18:18:48 +02:00
In-memory implementations of the store api using JaxB
The new implementations are ment to be used in test classes replacing the older implementations like `InMemoryConfigurationStoreFactory`. The benefit of these new classes is that the serialization using JaxB is testet implicitly avoiding mistakes made with XML annotations on the data classes. Committed-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com> Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
This commit is contained in:
@@ -34,7 +34,7 @@ import org.junit.rules.ExpectedException;
|
||||
import sonia.scm.NotFoundException;
|
||||
import sonia.scm.auditlog.Auditor;
|
||||
import sonia.scm.plugin.PluginLoader;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory;
|
||||
import sonia.scm.util.ClassLoaders;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -70,7 +70,7 @@ public class PermissionAssignerTest {
|
||||
PluginLoader pluginLoader = mock(PluginLoader.class);
|
||||
when(pluginLoader.getUberClassLoader()).thenReturn(ClassLoaders.getContextClassLoader(DefaultSecuritySystem.class));
|
||||
|
||||
securitySystem = new DefaultSecuritySystem(new InMemoryConfigurationEntryStoreFactory(), pluginLoader, Set.of(auditor)) {
|
||||
securitySystem = new DefaultSecuritySystem(new InMemoryByteConfigurationEntryStoreFactory(), pluginLoader, Set.of(auditor)) {
|
||||
@Override
|
||||
public Collection<PermissionDescriptor> getAvailablePermissions() {
|
||||
return Arrays.stream(new String[]{"perm:read:1", "perm:read:2", "perm:read:3", "perm:read:4"})
|
||||
|
||||
@@ -30,7 +30,7 @@ import sonia.scm.migration.RepositoryUpdateContext;
|
||||
import sonia.scm.migration.RepositoryUpdateStep;
|
||||
import sonia.scm.migration.UpdateStep;
|
||||
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory;
|
||||
import sonia.scm.version.Version;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -50,7 +50,7 @@ import static sonia.scm.version.Version.parse;
|
||||
|
||||
class UpdateEngineTest {
|
||||
|
||||
ConfigurationEntryStoreFactory storeFactory = new InMemoryConfigurationEntryStoreFactory();
|
||||
ConfigurationEntryStoreFactory storeFactory = new InMemoryByteConfigurationEntryStoreFactory();
|
||||
RepositoryUpdateIterator repositoryUpdateIterator = mock(RepositoryUpdateIterator.class, CALLS_REAL_METHODS);
|
||||
UpdateStepStore updateStepStore = new UpdateStepStore(storeFactory);
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import sonia.scm.group.Group;
|
||||
import sonia.scm.group.xml.XmlGroupDAO;
|
||||
import sonia.scm.store.ConfigurationEntryStore;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory;
|
||||
import sonia.scm.update.UpdateStepTestUtil;
|
||||
import sonia.scm.update.V1Properties;
|
||||
|
||||
@@ -51,7 +51,7 @@ 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 sonia.scm.store.InMemoryConfigurationEntryStoreFactory.create;
|
||||
import static sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory.create;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class XmlGroupV1UpdateStepTest {
|
||||
@@ -62,7 +62,7 @@ class XmlGroupV1UpdateStepTest {
|
||||
@Captor
|
||||
ArgumentCaptor<Group> groupCaptor;
|
||||
|
||||
InMemoryConfigurationEntryStoreFactory storeFactory = create();
|
||||
InMemoryByteConfigurationEntryStoreFactory storeFactory = create();
|
||||
|
||||
XmlGroupV1UpdateStep updateStep;
|
||||
|
||||
@@ -111,7 +111,7 @@ class XmlGroupV1UpdateStepTest {
|
||||
@Test
|
||||
void shouldExtractProperties() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
ConfigurationEntryStore<V1Properties> propertiesStore = storeFactory.get("group-properties-v1");
|
||||
ConfigurationEntryStore<V1Properties> propertiesStore = storeFactory.get(V1Properties.class, "group-properties-v1");
|
||||
V1Properties properties = propertiesStore.get("normals");
|
||||
assertThat(properties).isNotNull();
|
||||
assertThat(properties.get("mostly")).isEqualTo("humans");
|
||||
|
||||
@@ -40,8 +40,9 @@ import sonia.scm.repository.Repository;
|
||||
import sonia.scm.repository.RepositoryPermission;
|
||||
import sonia.scm.repository.xml.XmlRepositoryDAO;
|
||||
import sonia.scm.store.ConfigurationEntryStore;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory;
|
||||
import sonia.scm.update.UpdateStepTestUtil;
|
||||
import sonia.scm.update.V1Properties;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
@@ -72,7 +73,7 @@ class XmlRepositoryV1UpdateStepTest {
|
||||
@Mock
|
||||
DefaultMigrationStrategyDAO migrationStrategyDao;
|
||||
|
||||
InMemoryConfigurationEntryStoreFactory configurationEntryStoreFactory = new InMemoryConfigurationEntryStoreFactory();
|
||||
InMemoryByteConfigurationEntryStoreFactory configurationEntryStoreFactory = new InMemoryByteConfigurationEntryStoreFactory();
|
||||
|
||||
@Captor
|
||||
ArgumentCaptor<Repository> storeCaptor;
|
||||
@@ -172,7 +173,7 @@ class XmlRepositoryV1UpdateStepTest {
|
||||
void shouldExtractPropertiesFromRepositories() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
|
||||
ConfigurationEntryStore store = configurationEntryStoreFactory.get("repository-properties-v1");
|
||||
ConfigurationEntryStore store = configurationEntryStoreFactory.get(V1Properties.class,"repository-properties-v1");
|
||||
assertThat(store.getAll())
|
||||
.hasSize(3);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.security.AssignedPermission;
|
||||
import sonia.scm.store.ConfigurationEntryStore;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
@@ -43,12 +43,11 @@ import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static sonia.scm.store.InMemoryConfigurationEntryStoreFactory.create;
|
||||
import static sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory.create;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class XmlSecurityV1UpdateStepTest {
|
||||
@@ -65,8 +64,8 @@ class XmlSecurityV1UpdateStepTest {
|
||||
@BeforeEach
|
||||
void mockScmHome() {
|
||||
when(contextProvider.getBaseDirectory()).thenReturn(tempDir.toFile());
|
||||
InMemoryConfigurationEntryStoreFactory inMemoryConfigurationEntryStoreFactory = create();
|
||||
assignedPermissionStore = inMemoryConfigurationEntryStoreFactory.get("security");
|
||||
InMemoryByteConfigurationEntryStoreFactory inMemoryConfigurationEntryStoreFactory = create();
|
||||
assignedPermissionStore = inMemoryConfigurationEntryStoreFactory.get(AssignedPermission.class, "security");
|
||||
updateStep = new XmlSecurityV1UpdateStep(contextProvider, inMemoryConfigurationEntryStoreFactory);
|
||||
}
|
||||
|
||||
@@ -129,8 +128,9 @@ class XmlSecurityV1UpdateStepTest {
|
||||
.filter(a -> a.getPermission().getValue().contains("repository:"))
|
||||
.map(AssignedPermission::getName)
|
||||
.collect(toList());
|
||||
assertThat(assignedPermission).contains("scmadmin");
|
||||
assertThat(assignedPermission).contains("test");
|
||||
assertThat(assignedPermission)
|
||||
.contains("scmadmin")
|
||||
.contains("test");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import sonia.scm.security.AssignedPermission;
|
||||
import sonia.scm.store.ConfigurationEntryStore;
|
||||
import sonia.scm.store.InMemoryConfigurationEntryStoreFactory;
|
||||
import sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory;
|
||||
import sonia.scm.update.UpdateStepTestUtil;
|
||||
import sonia.scm.update.V1Properties;
|
||||
import sonia.scm.user.User;
|
||||
@@ -51,7 +51,7 @@ 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 sonia.scm.store.InMemoryConfigurationEntryStoreFactory.create;
|
||||
import static sonia.scm.store.InMemoryByteConfigurationEntryStoreFactory.create;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class XmlUserV1UpdateStepTest {
|
||||
@@ -62,7 +62,7 @@ class XmlUserV1UpdateStepTest {
|
||||
@Captor
|
||||
ArgumentCaptor<User> userCaptor;
|
||||
|
||||
InMemoryConfigurationEntryStoreFactory storeFactory = create();
|
||||
InMemoryByteConfigurationEntryStoreFactory storeFactory = create();
|
||||
|
||||
XmlUserV1UpdateStep updateStep;
|
||||
|
||||
@@ -91,7 +91,7 @@ class XmlUserV1UpdateStepTest {
|
||||
void shouldCreateNewPermissionsForV1AdminUser() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
Optional<AssignedPermission> assignedPermission =
|
||||
storeFactory.<AssignedPermission>get("security")
|
||||
storeFactory.<AssignedPermission>get(AssignedPermission.class, "security")
|
||||
.getAll()
|
||||
.values()
|
||||
.stream()
|
||||
@@ -126,7 +126,7 @@ class XmlUserV1UpdateStepTest {
|
||||
@Test
|
||||
void shouldExtractProperties() throws JAXBException {
|
||||
updateStep.doUpdate();
|
||||
ConfigurationEntryStore<V1Properties> propertiesStore = storeFactory.<V1Properties>get("user-properties-v1");
|
||||
ConfigurationEntryStore<V1Properties> propertiesStore = storeFactory.<V1Properties>get(V1Properties.class, "user-properties-v1");
|
||||
V1Properties properties = propertiesStore.get("dent");
|
||||
assertThat(properties).isNotNull();
|
||||
assertThat(properties.get("born.on")).isEqualTo("earth");
|
||||
|
||||
Reference in New Issue
Block a user