RED-6467: Expanded dossier-template import (integration) test to use the client, to test the complete code flow

This commit is contained in:
Viktor Seifert 2023-04-18 15:58:21 +02:00
parent 225bdd5500
commit 9295725adc
5 changed files with 76 additions and 17 deletions

View File

@ -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<Path> 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<Path> 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()));
}
}

View File

@ -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");

View File

@ -134,3 +134,9 @@ commons:
client-id: redaction
client-secret: redaction
feign:
client:
config:
DossierTemplateClient:
connectTimeout: 10000
readTimeout: 200000