RED-2403 Adopted controller and test to handle fileNames containing dots
This commit is contained in:
parent
db93fb6e5c
commit
8b0d5b63d5
@ -105,15 +105,23 @@ public class ReportTemplateController implements ReportTemplateResource {
|
|||||||
|
|
||||||
private String parseFileName(@NonNull ReportTemplateUploadRequest reportTemplateUploadRequest) {
|
private String parseFileName(@NonNull ReportTemplateUploadRequest reportTemplateUploadRequest) {
|
||||||
|
|
||||||
String fileName = reportTemplateUploadRequest.getFileName();
|
|
||||||
if (reportTemplateUploadRequest.isMultiFileReport()) {
|
if (reportTemplateUploadRequest.isMultiFileReport()) {
|
||||||
String[] splitFileName = StringUtils.split(fileName, ".");
|
String fileName = reportTemplateUploadRequest.getFileName();
|
||||||
if (splitFileName.length != 2) {
|
|
||||||
|
int index = StringUtils.lastIndexOf(fileName, ".");
|
||||||
|
if (index < 1) {
|
||||||
throw new BadRequestException("FileName is not correct.");
|
throw new BadRequestException("FileName is not correct.");
|
||||||
}
|
}
|
||||||
fileName = splitFileName[0] + "(multifile)." + splitFileName[1];
|
String fileNameWithoutEnding = StringUtils.substring(fileName, 0, index);
|
||||||
|
String fileEnding = StringUtils.substring(fileName, index);
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(fileNameWithoutEnding) || StringUtils.isEmpty(fileEnding)) {
|
||||||
|
throw new BadRequestException("FileName is not correct.");
|
||||||
|
}
|
||||||
|
return fileNameWithoutEnding + "(multifile)" + fileEnding;
|
||||||
|
} else {
|
||||||
|
return reportTemplateUploadRequest.getFileName();
|
||||||
}
|
}
|
||||||
return fileName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -394,6 +394,40 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Upload multiFile report with fantasy fileEnding
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiFileReportTemplateWithDotsInName() {
|
||||||
|
// Arrange
|
||||||
|
String fileName = "awesome.report.with.many.dots";
|
||||||
|
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 multiFile report with corrupt fileName
|
* Upload multiFile report with corrupt fileName
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user