diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java index 89f7723fd..59993129d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java @@ -1,8 +1,11 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -13,10 +16,15 @@ import java.util.zip.ZipOutputStream; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.mock.web.MockMultipartFile; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateImportService; +import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.management.v1.processor.utils.multitenancy.TenantContext; +import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; import lombok.SneakyThrows; @@ -25,8 +33,12 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class DossierTemplateImportTest extends AbstractPersistenceServerServiceTest { + public static final String DOSSIERTEMPLATES_PATH = "files/dossiertemplates/"; @Autowired - private DossierTemplateImportService dossierTemplateImportService; + private DossierTemplateManagementService dossierTemplateManagementService; + + @Autowired + private DossierTemplateClient dossierTemplateClient; @SneakyThrows @@ -35,17 +47,21 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT public void testDossierTemplateImport() { var importDir = new File("/Users/timobejan/work/dossier-templates-v2/dev"); + assertThat(importDir).isNotNull(); + assertThat(importDir.exists()).isTrue(); TenantContext.setTenantId("redaction"); for (var file : importDir.listFiles()) { - if(file.isDirectory()){ + if (file.isDirectory()) { var archive = pack(file.getAbsolutePath()); log.info("Importing file: " + file.getName() + " " + " with size: " + archive.length); var request = new ImportDossierTemplateRequest(); request.setArchive(archive); request.setUpdateExistingDossierTemplate(false); request.setUserId("system"); - dossierTemplateImportService.importDossierTemplate(request); + DossierTemplate dossierTemplate = dossierTemplateManagementService.importDossierTemplate(request); + assertThat(dossierTemplate).isNotNull(); + assertThat(dossierTemplate.getId()).isNotBlank(); } } } @@ -56,18 +72,19 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT var bos = new ByteArrayOutputStream(); var p = Paths.get(sourceDirPath); try (ZipOutputStream zs = new ZipOutputStream(bos)) { - Stream paths = Files.walk(p); - { - paths.filter(path -> !Files.isDirectory(path)).forEach(path -> { - ZipEntry zipEntry = new ZipEntry(p.relativize(path).toString()); - try { - zs.putNextEntry(zipEntry); - Files.copy(path, zs); - zs.closeEntry(); - } catch (IOException e) { - System.err.println(e); - } - }); + try (Stream paths = Files.walk(p)) { + { + paths.filter(path -> !Files.isDirectory(path)).forEach(path -> { + ZipEntry zipEntry = new ZipEntry(p.relativize(path).toString()); + try { + zs.putNextEntry(zipEntry); + Files.copy(path, zs); + zs.closeEntry(); + } catch (IOException e) { + log.error("Failed to read a file", e); + } + }); + } } } @@ -75,6 +92,42 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT } + + @Test + @SneakyThrows + @Disabled + public void dossierImportClientTest() { + + var multipartFile = loadDossierTemplateFromClasspath("EFSA_sanitisation_GFL_v1.zip"); + DossierTemplateModel dossierTemplateModel = dossierTemplateClient.importDossierTemplate(multipartFile, null, false); + assertThat(dossierTemplateModel).isNotNull(); + assertThat(dossierTemplateModel.getId()).isNotBlank(); + + } + + + @SneakyThrows + private MockMultipartFile loadDossierTemplateFromClasspath(String filename) { + + ClassPathResource classPathResource = new ClassPathResource(DOSSIERTEMPLATES_PATH + filename); + assertThat(classPathResource.exists()).isTrue(); + try (InputStream inputStream = classPathResource.getInputStream()) { + return new MockMultipartFile(filename, filename, "", inputStream); + } + } + + + // This can be used to test with local files that are not part of the project. + @SuppressWarnings("unused") + @SneakyThrows + private MockMultipartFile loadDossierTemplateFromFile(String filename) { + + File file = new File(filename); + assertThat(file.exists()).isTrue(); + + return new MockMultipartFile(filename, filename, "", Files.readAllBytes(file.toPath())); + } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 835f52448..a3b0aaf54 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -678,7 +678,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @SneakyThrows public void testImportDossierTemplateNewTemplatewithCompressionRatioThresholdSurpassed() { - String fileZip = "EFSA_sanitisation_GFL_v1_adress_parts.zip"; + String fileZip = "files/dossiertemplates/EFSA_sanitisation_GFL_v1_adress_parts.zip"; try (InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(fileZip)) { if (inputStream == null) { throw new RuntimeException("Resource " + fileZip + " was not found on the classpath or is not readable"); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml index 66f8a3b11..87063e89f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml @@ -134,3 +134,9 @@ commons: client-id: redaction client-secret: redaction +feign: + client: + config: + DossierTemplateClient: + connectTimeout: 10000 + readTimeout: 200000 \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1.zip new file mode 100644 index 000000000..79b0004eb Binary files /dev/null and b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1.zip differ diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/EFSA_sanitisation_GFL_v1_adress_parts.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1_adress_parts.zip similarity index 100% rename from persistence-service-v1/persistence-service-server-v1/src/test/resources/EFSA_sanitisation_GFL_v1_adress_parts.zip rename to persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1_adress_parts.zip