Pull request #74: RED-2455 Bugfix: Delete file attributes if hard deleting file.
Merge in RED/persistence-service from RED-2455 to master * commit 'b7107e35207736d9b18f139160daa233e450f321': RED-2455 Bugfix: Delete file attributes if hard deleting file. And added test
This commit is contained in:
commit
01212da926
@ -254,6 +254,8 @@ public class FileStatusPersistenceService {
|
||||
file.setStatus(FileStatus.DELETED);
|
||||
file.setDeleted(file.getDeleted() == null ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : file.getDeleted());
|
||||
file.setHardDeletedTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
|
||||
fileAttributesRepository.deleteByFileId(fileId);
|
||||
}, () -> {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
@ -1,31 +1,34 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient;
|
||||
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.service.v1.api.model.dossiertemplate.FileAttributesGeneralConfiguration;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ImportCsvRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.assertj.core.util.Lists;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.assertj.core.util.Lists;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient;
|
||||
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.service.v1.api.model.dossiertemplate.FileAttributesGeneralConfiguration;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ImportCsvRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FileTesterAndProvider fileTesterAndProvider;
|
||||
|
||||
@ -41,15 +44,18 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private FileClient fileClient;
|
||||
|
||||
@Autowired
|
||||
private UploadClient uploadClient;
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
@Test
|
||||
public void testFileAttributes() {
|
||||
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
|
||||
FileAttributesGeneralConfiguration generalConfig = new FileAttributesGeneralConfiguration();
|
||||
generalConfig.setDelimiter(",");
|
||||
generalConfig.setFilenameMappingColumnHeaderName("Name");
|
||||
@ -61,36 +67,48 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
List<FileAttributeConfig> configs = new ArrayList<>();
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build());
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute A").primaryAttribute(false).label("Attribute A").build());
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute B").primaryAttribute(false).label("Attribute B").build());
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute C").primaryAttribute(false).label("Attribute C").build());
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute D").primaryAttribute(false).label("Attribute D").build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute A")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute A")
|
||||
.build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute B")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute B")
|
||||
.build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute C")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute C")
|
||||
.build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute D")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute D")
|
||||
.build());
|
||||
|
||||
fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), configs);
|
||||
|
||||
|
||||
List<FileAttributeConfig> loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
|
||||
assertThat(loadedConfigs.size()).isEqualTo(5);
|
||||
|
||||
|
||||
fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream()
|
||||
.filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute C"))
|
||||
.findAny()
|
||||
.map(FileAttributeConfig::getId)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Should exists!")));
|
||||
|
||||
|
||||
fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream()
|
||||
.filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute D"))
|
||||
.findAny()
|
||||
.map(FileAttributeConfig::getId)
|
||||
.stream().collect(Collectors.toList()));
|
||||
|
||||
.stream()
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
|
||||
assertThat(loadedConfigs.size()).isEqualTo(3);
|
||||
|
||||
|
||||
FileAttributeConfig newConfig = new FileAttributeConfig();
|
||||
newConfig.setPrimaryAttribute(true);
|
||||
newConfig.setLabel("Test Attribute");
|
||||
@ -98,7 +116,6 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
|
||||
assertThat(loadedConfigs.size()).isEqualTo(4);
|
||||
|
||||
|
||||
newConfig.setId(created.getId());
|
||||
newConfig.setLabel("Test Attribute Update");
|
||||
var updated = fileAttributeConfigClient.addOrUpdateFileAttributeConfig(dossier.getDossierTemplateId(), newConfig);
|
||||
@ -106,21 +123,18 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedConfigs.size()).isEqualTo(4);
|
||||
assertThat(updated.getLabel()).isEqualTo("Test Attribute Update");
|
||||
|
||||
|
||||
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), Map.of(updated.getId(), "Lorem Ipsum"));
|
||||
|
||||
|
||||
Map<String, String> fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
|
||||
Map<String, String> fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId())
|
||||
.getFileAttributes();
|
||||
assertThat(fileAttributes.size()).isEqualTo(1);
|
||||
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isEqualTo("Lorem Ipsum");
|
||||
|
||||
|
||||
var request = new ImportCsvRequest();
|
||||
request.setCsvFile(IOUtils.toByteArray(new ClassPathResource("files/test.csv").getInputStream()));
|
||||
fileAttributeClient.importCsv(dossier.getId(), request);
|
||||
fileAttributeClient.importCsv(dossier.getId(), request);
|
||||
|
||||
|
||||
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
|
||||
assertThat(fileAttributes.size()).isEqualTo(2);
|
||||
|
||||
@ -130,7 +144,6 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
|
||||
assertThat(fileAttributes.size()).isEqualTo(2);
|
||||
|
||||
|
||||
fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), Lists.newArrayList());
|
||||
|
||||
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
|
||||
@ -138,8 +151,73 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
|
||||
assertThat(fileAttributes.size()).isEqualTo(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
@Test
|
||||
public void testDeleteFile() {
|
||||
// Create file with attributes
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
FileAttributesGeneralConfiguration generalConfig = new FileAttributesGeneralConfiguration();
|
||||
generalConfig.setDelimiter(",");
|
||||
generalConfig.setFilenameMappingColumnHeaderName("Name");
|
||||
generalConfig.setDossierTemplateId(dossier.getDossierTemplateId());
|
||||
|
||||
fileAttributeConfigClient.setFileAttributesGeneralConfig(dossier.getDossierTemplateId(), generalConfig);
|
||||
var loadedConfig = fileAttributeConfigClient.getFileAttributesGeneralConfig(dossier.getDossierTemplateId());
|
||||
assertThat(loadedConfig.getDelimiter()).isEqualTo(",");
|
||||
|
||||
List<FileAttributeConfig> configs = new ArrayList<>();
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute A")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute A")
|
||||
.build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute B")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute B")
|
||||
.build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute C")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute C")
|
||||
.build());
|
||||
configs.add(FileAttributeConfig.builder()
|
||||
.csvColumnHeader("Attribute D")
|
||||
.primaryAttribute(false)
|
||||
.label("Attribute D")
|
||||
.build());
|
||||
|
||||
fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), configs);
|
||||
|
||||
List<FileAttributeConfig> loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
|
||||
assertThat(loadedConfigs.size()).isEqualTo(5);
|
||||
|
||||
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), Map.of(loadedConfigs.get(0)
|
||||
.getId(), "Lorem Ipsum"));
|
||||
|
||||
Map<String, String> fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId())
|
||||
.getFileAttributes();
|
||||
assertThat(fileAttributes.size()).isEqualTo(1);
|
||||
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isEqualTo("Lorem Ipsum");
|
||||
|
||||
// Delete file
|
||||
uploadClient.deleteFile(dossier.getId(), file.getId());
|
||||
uploadClient.hardDeleteFiles(dossier.getId(), Sets.newHashSet(file.getId()));
|
||||
var deletedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(deletedFile.getFileAttributes()).isEmpty();
|
||||
|
||||
// Reupload file
|
||||
var newFile = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
assertThat(file.getId()).isEqualTo(newFile.getId());
|
||||
|
||||
var loadedFile = fileClient.getFileStatus(dossier.getId(), newFile.getId());
|
||||
assertThat(loadedFile.getFileAttributes()).isEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilewithRedactions() {
|
||||
public void testFileWithRedactions() {
|
||||
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user