RED-3642 - Not approved files can be prepared for download
- when at least one file from the requested list is not in approved state throw bad request exception - update junit tests
This commit is contained in:
parent
1d70009a83
commit
5e8c8103ea
@ -6,6 +6,8 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -46,6 +48,9 @@ public class DownloadController implements DownloadResource {
|
||||
var mimeType = "application/zip";
|
||||
|
||||
var existingFileStatuses = fileStatusPersistenceService.getStatusesForDossier(request.getDossierId());
|
||||
var filesInNotApprovedState = existingFileStatuses.stream().filter(f -> request.getFileIds().contains(f.getId()) && !WorkflowStatus.APPROVED.equals(f.getWorkflowStatus())).collect(Collectors.toList());
|
||||
if (!filesInNotApprovedState.isEmpty())
|
||||
throw new BadRequestException("At least one file is not in Approved state");
|
||||
String downloadFilename = buildName(request.getDossierId(), request.getFileIds(), request.getUserId(), mimeType, existingFileStatuses);
|
||||
String storageId = StorageIdUtils.getStorageId(request.getUserId(), request.getDossierId(), downloadFilename);
|
||||
var dossier = dossierPersistenceService.getActiveOrArchivedDossier(request.getDossierId());
|
||||
|
||||
@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
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.DossierTesterAndProvider;
|
||||
@ -12,6 +13,7 @@ import com.iqser.red.service.peristence.v1.server.service.download.DownloadRepor
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation;
|
||||
@ -62,6 +64,8 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes
|
||||
@Autowired
|
||||
private DossierClient dossierClient;
|
||||
|
||||
@Autowired
|
||||
private FileClient fileClient;
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
@ -73,6 +77,10 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
fileClient.setStatusApproved(dossier.getId(), file.getId(), file.getUploader());
|
||||
var file11 = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(file11.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED);
|
||||
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.activeByDefault(true)
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
|
||||
@ -1,15 +1,20 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest;
|
||||
import feign.FeignException;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@ -24,17 +29,34 @@ public class DownloadTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private DownloadClient downloadClient;
|
||||
|
||||
@Autowired
|
||||
private FileClient fileClient;
|
||||
|
||||
@Test
|
||||
public void testDownload() {
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
var file2 = fileTesterAndProvider.testAndProvideFile(dossier, "file2.pdf");
|
||||
|
||||
fileClient.setStatusApproved(dossier.getId(), file2.getId(), file2.getUploader());
|
||||
var file22 = fileClient.getFileStatus(dossier.getId(), file2.getId());
|
||||
assertThat(file22.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED);
|
||||
|
||||
try {
|
||||
downloadClient.prepareDownload(DownloadRequest.builder()
|
||||
.userId("1")
|
||||
.dossierId(dossier.getId())
|
||||
.fileIds(List.of(file.getId(), file2.getId()))
|
||||
.build());
|
||||
} catch(FeignException e) {
|
||||
assertThat(e.status()).isEqualTo(400);
|
||||
}
|
||||
|
||||
downloadClient.prepareDownload(DownloadRequest.builder()
|
||||
.userId("1")
|
||||
.dossierId(dossier.getId())
|
||||
.fileIds(Collections.singletonList(file.getId()))
|
||||
.fileIds(List.of(file2.getId()))
|
||||
.build());
|
||||
|
||||
var statuses = downloadClient.getDownloadStatus("1");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user