From d2c14e1ef9664e4d4843cc7730206477dcd2c7c3 Mon Sep 17 00:00:00 2001 From: Awambeng Date: Thu, 11 Apr 2024 13:33:27 +0100 Subject: [PATCH 1/2] Update datasafe-simple-adapter-spring test files to distinguish unit and integration test --- .../adapter/spring/InjectionForMinioIT.java | 48 ++++++++ .../simple/adapter/spring/InjectionIT.java | 116 ++++++++++++++++++ ...nWithoutPathEncryptionForFilesystemIT.java | 42 +++++++ ...ectionWithoutPathEncryptionForMinioIT.java | 49 ++++++++ 4 files changed, 255 insertions(+) create mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java create mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java create mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java create mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java new file mode 100644 index 000000000..92dac7b94 --- /dev/null +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java @@ -0,0 +1,48 @@ +package de.adorsys.datasafe.simple.adapter.spring; + +import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; +import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; +import de.adorsys.datasafe.simple.adapter.spring.factory.SpringSimpleDatasafeServiceFactory; +import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDFSCredentialProperties; +import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDatasafeEncryptionProperties; +import de.adorsys.datasafe.teststorage.WithStorageProvider; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ActiveProfiles; + +import java.util.stream.Stream; + + +@Slf4j +@ActiveProfiles("minio") +@UseDatasafeSpringConfiguration +public class InjectionForMinioIT extends InjectionIT { + + @Autowired + private SpringDFSCredentialProperties dfsCredentialProperties; + + @Autowired + private SpringDatasafeEncryptionProperties encryptionProperties; + + @BeforeAll + static void startMinio() { + minio().getStorageService().get(); + System.setProperty("MINIO_URL", minio().getMappedUrl()); + } + + private static Stream minioonly() { + return Stream.of(minio()); + } + + @ParameterizedTest + @MethodSource("minioonly") + public void plainService(WithStorageProvider.StorageDescriptor descriptor) { + log.info("descriptor is " + descriptor.getName()); + SpringSimpleDatasafeServiceFactory springSimpleDatasafeServiceFactory = new SpringSimpleDatasafeServiceFactory(SpringPropertiesToDFSCredentialsUtil.dfsCredentials(dfsCredentialProperties), encryptionProperties); + SimpleDatasafeService service = springSimpleDatasafeServiceFactory.getSimpleDataSafeServiceWithSubdir("subdir"); + testCreateUser(service); + } +} diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java new file mode 100644 index 000000000..76b2c0505 --- /dev/null +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java @@ -0,0 +1,116 @@ +package de.adorsys.datasafe.simple.adapter.spring; + +import de.adorsys.datasafe.encrypiton.api.types.UserID; +import de.adorsys.datasafe.encrypiton.api.types.UserIDAuth; +import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; +import de.adorsys.datasafe.simple.adapter.api.types.AmazonS3DFSCredentials; +import de.adorsys.datasafe.simple.adapter.api.types.DFSCredentials; +import de.adorsys.datasafe.simple.adapter.api.types.DSDocument; +import de.adorsys.datasafe.simple.adapter.api.types.DocumentContent; +import de.adorsys.datasafe.simple.adapter.api.types.DocumentFQN; +import de.adorsys.datasafe.simple.adapter.api.types.FilesystemDFSCredentials; +import de.adorsys.datasafe.simple.adapter.impl.SimpleDatasafeServiceImpl; +import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; +import de.adorsys.datasafe.teststorage.WithStorageProvider; +import de.adorsys.datasafe.types.api.resource.AbsoluteLocation; +import de.adorsys.datasafe.types.api.resource.BasePrivateResource; +import de.adorsys.datasafe.types.api.resource.PrivateResource; +import de.adorsys.datasafe.types.api.resource.ResolvedResource; +import de.adorsys.datasafe.types.api.types.ReadKeyPassword; +import de.adorsys.datasafe.types.api.utils.ReadKeyPasswordTestFactory; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.Nullable; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.testcontainers.shaded.org.apache.commons.io.IOUtils; + +import java.io.InputStream; +import java.io.StringWriter; +import java.net.URI; +import java.nio.file.FileSystems; +import java.nio.file.Path; +import java.util.Optional; +import java.util.stream.Stream; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Slf4j +@SpringBootTest +@ExtendWith(SpringExtension.class) +@ContextConfiguration +@SpringBootConfiguration +@UseDatasafeSpringConfiguration +public class InjectionIT extends WithStorageProvider { + + public void testCreateUser(SimpleDatasafeService datasafeService) { + assertThat(datasafeService).isNotNull(); + UserID userid = new UserID("peter"); + ReadKeyPassword password = ReadKeyPasswordTestFactory.getForString("password"); + UserIDAuth userIDAuth = new UserIDAuth(userid, password); + assertThat(datasafeService.userExists(userid)).isFalse(); + datasafeService.createUser(userIDAuth); + assertThat(datasafeService.userExists(userid)).isTrue(); + datasafeService.destroyUser(userIDAuth); + } + + @SneakyThrows + void testWithoutPathEncryption(SimpleDatasafeService simpleDatasafeServiceApi, DFSCredentials dfsCredentials) { + if (!(simpleDatasafeServiceApi instanceof SimpleDatasafeServiceImpl)) { + throw new TestException("Did expect instance of SimpleDatasafeServiceImpl"); + } + AbsoluteLocation rootLocation = getPrivateResourceAbsoluteLocation(dfsCredentials); + SimpleDatasafeServiceImpl simpleDatasafeService = (SimpleDatasafeServiceImpl) simpleDatasafeServiceApi; + + UserIDAuth userIDAuth = new UserIDAuth(new UserID("peter"), ReadKeyPasswordTestFactory.getForString("password")); + String content = "content of document"; + String path = "a/b/c.txt"; + DSDocument document = new DSDocument(new DocumentFQN(path), new DocumentContent(content.getBytes())); + simpleDatasafeService.createUser(userIDAuth); + simpleDatasafeService.storeDocument(userIDAuth, document); + + try (Stream> absoluteLocationStream = simpleDatasafeService.getStorageService().list(rootLocation)) { + assertEquals(1, absoluteLocationStream.filter(el -> el.location().toASCIIString().contains(path)).count()); + } + try (Stream> absoluteLocationStream = simpleDatasafeService.getStorageService().list(rootLocation)) { + Optional> first = absoluteLocationStream.filter(el -> el.location().toASCIIString().contains(path)).findFirst(); + if (!first.isPresent()) { + throw new TestException("expeceted absoluteLocatinn stream to have at least one element"); + } + + try (InputStream read = simpleDatasafeService.getStorageService().read(first.get())) { + StringWriter writer = new StringWriter(); + IOUtils.copy(read, writer, UTF_8); + assertFalse(writer.toString().equals(content)); + } + } + simpleDatasafeService.destroyUser(userIDAuth); + } + + @Nullable + @SneakyThrows + private AbsoluteLocation getPrivateResourceAbsoluteLocation(DFSCredentials dfsCredentials) { + if (dfsCredentials instanceof FilesystemDFSCredentials) { + String root = ((FilesystemDFSCredentials) dfsCredentials).getRoot(); + Path listpath = FileSystems.getDefault().getPath(root); + return new AbsoluteLocation<>(BasePrivateResource.forPrivate(listpath.toUri())); + } + if (dfsCredentials instanceof AmazonS3DFSCredentials) { + AmazonS3DFSCredentials a = (AmazonS3DFSCredentials) dfsCredentials; + return new AbsoluteLocation<>(BasePrivateResource.forPrivate(new URI(a.getUrl() + "/" + a.getRootBucket()))); + } + throw new TestException("NYI"); + } + + static class TestException extends RuntimeException { + public TestException(String message) { + super(message); + } + } +} diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java new file mode 100644 index 000000000..f7ab930ac --- /dev/null +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java @@ -0,0 +1,42 @@ +package de.adorsys.datasafe.simple.adapter.spring; + +import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; +import de.adorsys.datasafe.simple.adapter.api.types.DFSCredentials; +import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; +import de.adorsys.datasafe.simple.adapter.spring.factory.SpringSimpleDatasafeServiceFactory; +import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDFSCredentialProperties; +import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDatasafeEncryptionProperties; +import de.adorsys.datasafe.teststorage.WithStorageProvider; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ActiveProfiles; + +import java.util.stream.Stream; + +@Slf4j +@ActiveProfiles("fs-withoutPathEncryption") +@UseDatasafeSpringConfiguration +public class InjectionWithoutPathEncryptionForFilesystemIT extends InjectionIT { + @Autowired + private SpringDFSCredentialProperties dfsCredentialProperties; + + @Autowired + private SpringDatasafeEncryptionProperties encryptionProperties; + + private static Stream fsonly() { + return Stream.of(fs()); + } + + @ParameterizedTest + @MethodSource("fsonly") + public void plainService(WithStorageProvider.StorageDescriptor descriptor) { + log.info("descriptor is {}", descriptor.getName()); + DFSCredentials dfsCredentials = SpringPropertiesToDFSCredentialsUtil.dfsCredentials(dfsCredentialProperties); + SpringSimpleDatasafeServiceFactory springSimpleDatasafeServiceFactory = new SpringSimpleDatasafeServiceFactory(dfsCredentials, encryptionProperties); + SimpleDatasafeService service = springSimpleDatasafeServiceFactory.getSimpleDataSafeServiceWithSubdir("subdir"); + testWithoutPathEncryption(service, dfsCredentials); + } + +} diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java new file mode 100644 index 000000000..e97aad298 --- /dev/null +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java @@ -0,0 +1,49 @@ +package de.adorsys.datasafe.simple.adapter.spring; + +import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; +import de.adorsys.datasafe.simple.adapter.api.types.DFSCredentials; +import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; +import de.adorsys.datasafe.simple.adapter.spring.factory.SpringSimpleDatasafeServiceFactory; +import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDFSCredentialProperties; +import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDatasafeEncryptionProperties; +import de.adorsys.datasafe.teststorage.WithStorageProvider; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ActiveProfiles; + +import java.util.stream.Stream; + +@Slf4j +@ActiveProfiles("minio-withoutPathEncryption") +@UseDatasafeSpringConfiguration +public class InjectionWithoutPathEncryptionForMinioIT extends InjectionIT { + @Autowired + private SpringDFSCredentialProperties dfsCredentialProperties; + + @Autowired + private SpringDatasafeEncryptionProperties encryptionProperties; + + @BeforeAll + static void startMinio() { + minio().getStorageService().get(); + System.setProperty("MINIO_URL", minio().getMappedUrl()); + } + + private static Stream minioonly() { + return Stream.of(minio()); + } + + @ParameterizedTest + @MethodSource("minioonly") + public void plainService(WithStorageProvider.StorageDescriptor descriptor) { + log.info("descriptor is {}", descriptor.getName()); + DFSCredentials dfsCredentials = SpringPropertiesToDFSCredentialsUtil.dfsCredentials(dfsCredentialProperties); + SpringSimpleDatasafeServiceFactory springSimpleDatasafeServiceFactory = new SpringSimpleDatasafeServiceFactory(dfsCredentials, encryptionProperties); + SimpleDatasafeService service = springSimpleDatasafeServiceFactory.getSimpleDataSafeServiceWithSubdir("subdir"); + testWithoutPathEncryption(service, dfsCredentials); + } + +} From c5be1394461e5108982a867824768d2b30e1b9a3 Mon Sep 17 00:00:00 2001 From: Awambeng Date: Thu, 11 Apr 2024 15:50:19 +0100 Subject: [PATCH 2/2] fix: remove duplicated file --- .../spring/InjectionForFilesystemTest.java | 2 +- .../adapter/spring/InjectionForMinioTest.java | 48 -------- .../simple/adapter/spring/InjectionTest.java | 116 ------------------ ...ithoutPathEncryptionForFilesystemTest.java | 42 ------- ...tionWithoutPathEncryptionForMinioTest.java | 49 -------- 5 files changed, 1 insertion(+), 256 deletions(-) delete mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java delete mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java delete mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java delete mode 100644 datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java index 44b1c37ca..f6f6277bf 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java @@ -6,7 +6,7 @@ import org.springframework.test.context.ActiveProfiles; @ActiveProfiles("filesystem") -public class InjectionForFilesystemTest extends InjectionTest { +public class InjectionForFilesystemTest extends InjectionIT { @Autowired SimpleDatasafeService datasafeService; diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java deleted file mode 100644 index 0a4f14085..000000000 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.adorsys.datasafe.simple.adapter.spring; - -import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; -import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; -import de.adorsys.datasafe.simple.adapter.spring.factory.SpringSimpleDatasafeServiceFactory; -import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDFSCredentialProperties; -import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDatasafeEncryptionProperties; -import de.adorsys.datasafe.teststorage.WithStorageProvider; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ActiveProfiles; - -import java.util.stream.Stream; - - -@Slf4j -@ActiveProfiles("minio") -@UseDatasafeSpringConfiguration -public class InjectionForMinioTest extends InjectionTest { - - @Autowired - private SpringDFSCredentialProperties dfsCredentialProperties; - - @Autowired - private SpringDatasafeEncryptionProperties encryptionProperties; - - @BeforeAll - static void startMinio() { - minio().getStorageService().get(); - System.setProperty("MINIO_URL", minio().getMappedUrl()); - } - - private static Stream minioonly() { - return Stream.of(minio()); - } - - @ParameterizedTest - @MethodSource("minioonly") - public void plainService(WithStorageProvider.StorageDescriptor descriptor) { - log.info("descriptor is " + descriptor.getName()); - SpringSimpleDatasafeServiceFactory springSimpleDatasafeServiceFactory = new SpringSimpleDatasafeServiceFactory(SpringPropertiesToDFSCredentialsUtil.dfsCredentials(dfsCredentialProperties), encryptionProperties); - SimpleDatasafeService service = springSimpleDatasafeServiceFactory.getSimpleDataSafeServiceWithSubdir("subdir"); - testCreateUser(service); - } -} diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java deleted file mode 100644 index e10f39431..000000000 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java +++ /dev/null @@ -1,116 +0,0 @@ -package de.adorsys.datasafe.simple.adapter.spring; - -import de.adorsys.datasafe.encrypiton.api.types.UserID; -import de.adorsys.datasafe.encrypiton.api.types.UserIDAuth; -import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; -import de.adorsys.datasafe.simple.adapter.api.types.AmazonS3DFSCredentials; -import de.adorsys.datasafe.simple.adapter.api.types.DFSCredentials; -import de.adorsys.datasafe.simple.adapter.api.types.DSDocument; -import de.adorsys.datasafe.simple.adapter.api.types.DocumentContent; -import de.adorsys.datasafe.simple.adapter.api.types.DocumentFQN; -import de.adorsys.datasafe.simple.adapter.api.types.FilesystemDFSCredentials; -import de.adorsys.datasafe.simple.adapter.impl.SimpleDatasafeServiceImpl; -import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; -import de.adorsys.datasafe.teststorage.WithStorageProvider; -import de.adorsys.datasafe.types.api.resource.AbsoluteLocation; -import de.adorsys.datasafe.types.api.resource.BasePrivateResource; -import de.adorsys.datasafe.types.api.resource.PrivateResource; -import de.adorsys.datasafe.types.api.resource.ResolvedResource; -import de.adorsys.datasafe.types.api.types.ReadKeyPassword; -import de.adorsys.datasafe.types.api.utils.ReadKeyPasswordTestFactory; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.Nullable; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.testcontainers.shaded.org.apache.commons.io.IOUtils; - -import java.io.InputStream; -import java.io.StringWriter; -import java.net.URI; -import java.nio.file.FileSystems; -import java.nio.file.Path; -import java.util.Optional; -import java.util.stream.Stream; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertFalse; -import static org.junit.jupiter.api.Assertions.assertEquals; - -@Slf4j -@SpringBootTest -@ExtendWith(SpringExtension.class) -@ContextConfiguration -@SpringBootConfiguration -@UseDatasafeSpringConfiguration -public class InjectionTest extends WithStorageProvider { - - public void testCreateUser(SimpleDatasafeService datasafeService) { - assertThat(datasafeService).isNotNull(); - UserID userid = new UserID("peter"); - ReadKeyPassword password = ReadKeyPasswordTestFactory.getForString("password"); - UserIDAuth userIDAuth = new UserIDAuth(userid, password); - assertThat(datasafeService.userExists(userid)).isFalse(); - datasafeService.createUser(userIDAuth); - assertThat(datasafeService.userExists(userid)).isTrue(); - datasafeService.destroyUser(userIDAuth); - } - - @SneakyThrows - void testWithoutPathEncryption(SimpleDatasafeService simpleDatasafeServiceApi, DFSCredentials dfsCredentials) { - if (!(simpleDatasafeServiceApi instanceof SimpleDatasafeServiceImpl)) { - throw new TestException("Did expect instance of SimpleDatasafeServiceImpl"); - } - AbsoluteLocation rootLocation = getPrivateResourceAbsoluteLocation(dfsCredentials); - SimpleDatasafeServiceImpl simpleDatasafeService = (SimpleDatasafeServiceImpl) simpleDatasafeServiceApi; - - UserIDAuth userIDAuth = new UserIDAuth(new UserID("peter"), ReadKeyPasswordTestFactory.getForString("password")); - String content = "content of document"; - String path = "a/b/c.txt"; - DSDocument document = new DSDocument(new DocumentFQN(path), new DocumentContent(content.getBytes())); - simpleDatasafeService.createUser(userIDAuth); - simpleDatasafeService.storeDocument(userIDAuth, document); - - try (Stream> absoluteLocationStream = simpleDatasafeService.getStorageService().list(rootLocation)) { - assertEquals(1, absoluteLocationStream.filter(el -> el.location().toASCIIString().contains(path)).count()); - } - try (Stream> absoluteLocationStream = simpleDatasafeService.getStorageService().list(rootLocation)) { - Optional> first = absoluteLocationStream.filter(el -> el.location().toASCIIString().contains(path)).findFirst(); - if (!first.isPresent()) { - throw new TestException("expeceted absoluteLocatinn stream to have at least one element"); - } - - try (InputStream read = simpleDatasafeService.getStorageService().read(first.get())) { - StringWriter writer = new StringWriter(); - IOUtils.copy(read, writer, UTF_8); - assertFalse(writer.toString().equals(content)); - } - } - simpleDatasafeService.destroyUser(userIDAuth); - } - - @Nullable - @SneakyThrows - private AbsoluteLocation getPrivateResourceAbsoluteLocation(DFSCredentials dfsCredentials) { - if (dfsCredentials instanceof FilesystemDFSCredentials) { - String root = ((FilesystemDFSCredentials) dfsCredentials).getRoot(); - Path listpath = FileSystems.getDefault().getPath(root); - return new AbsoluteLocation<>(BasePrivateResource.forPrivate(listpath.toUri())); - } - if (dfsCredentials instanceof AmazonS3DFSCredentials) { - AmazonS3DFSCredentials a = (AmazonS3DFSCredentials) dfsCredentials; - return new AbsoluteLocation<>(BasePrivateResource.forPrivate(new URI(a.getUrl() + "/" + a.getRootBucket()))); - } - throw new TestException("NYI"); - } - - static class TestException extends RuntimeException { - public TestException(String message) { - super(message); - } - } -} diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java deleted file mode 100644 index 52b6636ea..000000000 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.adorsys.datasafe.simple.adapter.spring; - -import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; -import de.adorsys.datasafe.simple.adapter.api.types.DFSCredentials; -import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; -import de.adorsys.datasafe.simple.adapter.spring.factory.SpringSimpleDatasafeServiceFactory; -import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDFSCredentialProperties; -import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDatasafeEncryptionProperties; -import de.adorsys.datasafe.teststorage.WithStorageProvider; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ActiveProfiles; - -import java.util.stream.Stream; - -@Slf4j -@ActiveProfiles("fs-withoutPathEncryption") -@UseDatasafeSpringConfiguration -public class InjectionWithoutPathEncryptionForFilesystemTest extends InjectionTest { - @Autowired - private SpringDFSCredentialProperties dfsCredentialProperties; - - @Autowired - private SpringDatasafeEncryptionProperties encryptionProperties; - - private static Stream fsonly() { - return Stream.of(fs()); - } - - @ParameterizedTest - @MethodSource("fsonly") - public void plainService(WithStorageProvider.StorageDescriptor descriptor) { - log.info("descriptor is {}", descriptor.getName()); - DFSCredentials dfsCredentials = SpringPropertiesToDFSCredentialsUtil.dfsCredentials(dfsCredentialProperties); - SpringSimpleDatasafeServiceFactory springSimpleDatasafeServiceFactory = new SpringSimpleDatasafeServiceFactory(dfsCredentials, encryptionProperties); - SimpleDatasafeService service = springSimpleDatasafeServiceFactory.getSimpleDataSafeServiceWithSubdir("subdir"); - testWithoutPathEncryption(service, dfsCredentials); - } - -} diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java deleted file mode 100644 index 023f93952..000000000 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.adorsys.datasafe.simple.adapter.spring; - -import de.adorsys.datasafe.simple.adapter.api.SimpleDatasafeService; -import de.adorsys.datasafe.simple.adapter.api.types.DFSCredentials; -import de.adorsys.datasafe.simple.adapter.spring.annotations.UseDatasafeSpringConfiguration; -import de.adorsys.datasafe.simple.adapter.spring.factory.SpringSimpleDatasafeServiceFactory; -import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDFSCredentialProperties; -import de.adorsys.datasafe.simple.adapter.spring.properties.SpringDatasafeEncryptionProperties; -import de.adorsys.datasafe.teststorage.WithStorageProvider; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ActiveProfiles; - -import java.util.stream.Stream; - -@Slf4j -@ActiveProfiles("minio-withoutPathEncryption") -@UseDatasafeSpringConfiguration -public class InjectionWithoutPathEncryptionForMinioTest extends InjectionTest { - @Autowired - private SpringDFSCredentialProperties dfsCredentialProperties; - - @Autowired - private SpringDatasafeEncryptionProperties encryptionProperties; - - @BeforeAll - static void startMinio() { - minio().getStorageService().get(); - System.setProperty("MINIO_URL", minio().getMappedUrl()); - } - - private static Stream minioonly() { - return Stream.of(minio()); - } - - @ParameterizedTest - @MethodSource("minioonly") - public void plainService(WithStorageProvider.StorageDescriptor descriptor) { - log.info("descriptor is {}", descriptor.getName()); - DFSCredentials dfsCredentials = SpringPropertiesToDFSCredentialsUtil.dfsCredentials(dfsCredentialProperties); - SpringSimpleDatasafeServiceFactory springSimpleDatasafeServiceFactory = new SpringSimpleDatasafeServiceFactory(dfsCredentials, encryptionProperties); - SimpleDatasafeService service = springSimpleDatasafeServiceFactory.getSimpleDataSafeServiceWithSubdir("subdir"); - testWithoutPathEncryption(service, dfsCredentials); - } - -}