RED-2403 Fixed issue with file collision for multi file report template uploads
This commit is contained in:
parent
1225803c73
commit
3105367aa9
@ -1,7 +1,20 @@
|
|||||||
package com.iqser.red.service.peristence.v1.server.controller;
|
package com.iqser.red.service.peristence.v1.server.controller;
|
||||||
|
|
||||||
|
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils;
|
import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||||
@ -11,17 +24,9 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource;
|
import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource;
|
||||||
import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist;
|
import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist;
|
||||||
import com.iqser.red.storage.commons.service.StorageService;
|
import com.iqser.red.storage.commons.service.StorageService;
|
||||||
|
|
||||||
|
import lombok.NonNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ -33,18 +38,17 @@ public class ReportTemplateController implements ReportTemplateResource {
|
|||||||
|
|
||||||
public ReportTemplate uploadTemplate(@RequestBody ReportTemplateUploadRequest reportTemplateUploadRequest) {
|
public ReportTemplate uploadTemplate(@RequestBody ReportTemplateUploadRequest reportTemplateUploadRequest) {
|
||||||
|
|
||||||
|
String fileName = parseFileName(reportTemplateUploadRequest);
|
||||||
|
|
||||||
List<ReportTemplateEntity> reportTemplates = reportTemplatePersistenceService.findByDossierTemplateId(reportTemplateUploadRequest.getDossierTemplateId());
|
List<ReportTemplateEntity> reportTemplates = reportTemplatePersistenceService.findByDossierTemplateId(reportTemplateUploadRequest.getDossierTemplateId());
|
||||||
for (ReportTemplateEntity reportTemplate : reportTemplates) {
|
if (doesFileNameExists(reportTemplates, fileName)) {
|
||||||
if (reportTemplate.getFileName().equals(reportTemplateUploadRequest.getFileName())) {
|
throw new ConflictException("Template already exists.");
|
||||||
throw new ConflictException("Template already exists.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
String storageId = StorageIdUtils.getReportStorageId(reportTemplateUploadRequest.getDossierTemplateId(), reportTemplateUploadRequest
|
|
||||||
.getFileName());
|
String storageId = StorageIdUtils.getReportStorageId(reportTemplateUploadRequest.getDossierTemplateId(), fileName);
|
||||||
storageService.storeObject(storageId, reportTemplateUploadRequest.getTemplate());
|
storageService.storeObject(storageId, reportTemplateUploadRequest.getTemplate());
|
||||||
String templateId = UUID.randomUUID().toString();
|
String templateId = UUID.randomUUID().toString();
|
||||||
reportTemplatePersistenceService.insert(reportTemplateUploadRequest.getDossierTemplateId(), templateId, storageId, reportTemplateUploadRequest
|
reportTemplatePersistenceService.insert(reportTemplateUploadRequest.getDossierTemplateId(), templateId, storageId, fileName, reportTemplateUploadRequest.isMultiFileReport(), reportTemplateUploadRequest.isActiveByDefault());
|
||||||
.getFileName(), reportTemplateUploadRequest.isMultiFileReport(), reportTemplateUploadRequest.isActiveByDefault());
|
|
||||||
|
|
||||||
return convert(reportTemplatePersistenceService.find(templateId), ReportTemplate.class);
|
return convert(reportTemplatePersistenceService.find(templateId), ReportTemplate.class);
|
||||||
|
|
||||||
@ -87,4 +91,29 @@ public class ReportTemplateController implements ReportTemplateResource {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean doesFileNameExists(List<ReportTemplateEntity> reportTemplates, String fileName) {
|
||||||
|
|
||||||
|
for (ReportTemplateEntity reportTemplate : reportTemplates) {
|
||||||
|
if (reportTemplate.getFileName().equals(fileName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String parseFileName(@NonNull ReportTemplateUploadRequest reportTemplateUploadRequest) {
|
||||||
|
|
||||||
|
String fileName = reportTemplateUploadRequest.getFileName();
|
||||||
|
if (reportTemplateUploadRequest.isMultiFileReport()) {
|
||||||
|
String[] splitFileName = StringUtils.split(fileName, ".");
|
||||||
|
if (splitFileName.length != 2) {
|
||||||
|
throw new BadRequestException("FileName is not correct.");
|
||||||
|
}
|
||||||
|
fileName = splitFileName[0] + "(multifile)." + splitFileName[1];
|
||||||
|
}
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,15 @@
|
|||||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.catchThrowable;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
|
||||||
import org.junit.Test;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
|
public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
@ -17,38 +19,407 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ReportTemplateClient reportTemplateClient;
|
private ReportTemplateClient reportTemplateClient;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload report, verify it exist and delete afterwards
|
||||||
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testReportTemplate() {
|
public void testReportTemplate() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
assertThat(availableTemplates).isEmpty();
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
.activeByDefault(true)
|
.activeByDefault(true)
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
.multiFileReport(true)
|
.multiFileReport(false)
|
||||||
.fileName("test.docx")
|
.fileName(fileName)
|
||||||
.template(new byte[]{1, 2, 3, 4}).build());
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
assertThat(availableTemplates).isNotEmpty();
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator().next().getTemplateId());
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo(fileName);
|
||||||
|
|
||||||
var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
assertThat(download.getFile().length).isEqualTo(4);
|
assertThat(download.getFile().length).isEqualTo(4);
|
||||||
|
|
||||||
|
|
||||||
reportTemplateClient.deleteTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
reportTemplateClient.deleteTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
|
|
||||||
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
assertThat(availableTemplates).isEmpty();
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload multiFile report, verify it exist with correct fileName and delete afterwards
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplate() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo("report(multifile).xlsx");
|
||||||
|
|
||||||
|
var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
|
assertThat(download.getFile().length).isEqualTo(4);
|
||||||
|
|
||||||
|
reportTemplateClient.deleteTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Try to upload template two times
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testReportTemplateTwoTimes() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(false)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
final Throwable thrown = catchThrowable(() -> {
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(false)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThat(thrown.getMessage()).contains("Template already exists");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Try to upload multi file template two times
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateTwoTimes() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
final Throwable thrown = catchThrowable(() -> {
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThat(thrown.getMessage()).contains("Template already exists");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload template file and then multi file template with the same name
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testReportTemplateAndThenMultiFileReportTemple() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(false)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo(fileName);
|
||||||
|
|
||||||
|
var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
|
assertThat(download.getFile().length).isEqualTo(4);
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
assertThat(availableTemplates.size()).isEqualTo(2);
|
||||||
|
|
||||||
|
var secondTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.get(1)
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.get(1)).isEqualTo(secondTemplate);
|
||||||
|
assertThat(secondTemplate.getFileName()).isEqualTo("report(multifile).xlsx");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload multi file template and then template file with the same name
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateAndThenReportTemple() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo("report(multifile).xlsx");
|
||||||
|
|
||||||
|
var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
|
assertThat(download.getFile().length).isEqualTo(4);
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(false)
|
||||||
|
.fileName(fileName)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
assertThat(availableTemplates.size()).isEqualTo(2);
|
||||||
|
|
||||||
|
var secondTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.get(1)
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.get(1)).isEqualTo(secondTemplate);
|
||||||
|
assertThat(secondTemplate.getFileName()).isEqualTo(fileName);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload MF with ending xlsx
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateAsExcel() {
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report with really_weird~Name(567) [}=§$783 XYz&";
|
||||||
|
String fileEnding = ".xlsx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName + fileEnding)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload MF with ending docx
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateAsWord() {
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report with really_weird~Name(567) [}=§$783 XYz&";
|
||||||
|
String fileEnding = ".docx";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName + fileEnding)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload multiFile report with fantasy fileEnding
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateWithFantasyName() {
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report with really_weird~Name(567) [}=§$783 XYz&";
|
||||||
|
String fileEnding = ".fantasyEnding";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName + fileEnding)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
|
||||||
|
.next()
|
||||||
|
.getTemplateId());
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload multiFile report with corrupt fileName
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateWithCorruptFileName() {
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report";
|
||||||
|
String fileEnding = "endingWithoutDot";
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
final Throwable thrown = catchThrowable(() -> {
|
||||||
|
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||||
|
.activeByDefault(true)
|
||||||
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
|
.multiFileReport(true)
|
||||||
|
.fileName(fileName + fileEnding)
|
||||||
|
.template(new byte[]{1, 2, 3, 4})
|
||||||
|
.build());
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThat(thrown.getMessage()).contains("FileName is not correct");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user