From 3dc62f986c0ff14a280f7c0498c8ac72c009e336 Mon Sep 17 00:00:00 2001 From: devplant Date: Tue, 10 May 2022 12:20:25 +0300 Subject: [PATCH] RED-3749-Remove digital signatures on upload - add add new field removeDigitalSignaturesOnUpload to application config - update junit tests --- .../configuration/ApplicationConfig.java | 1 + .../ApplicationConfigurationEntity.java | 3 +++ .../migration/migrations/MigrateHighlights3.java | 9 ++++++++- .../peristence/v1/server/service/FileService.java | 10 ++++++++-- ...emove-digital-signatures-on-upload.changelog.yaml | 12 ++++++++++++ .../resources/db/changelog/db.changelog-master.yaml | 2 ++ .../integration/tests/ApplicationConfigTest.java | 5 ++++- .../utils/AbstractPersistenceServerServiceTest.java | 12 ++++++++++++ persistence-service-v1/pom.xml | 2 +- 9 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/28-add-remove-digital-signatures-on-upload.changelog.yaml diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/ApplicationConfig.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/ApplicationConfig.java index c2d0265cf..8ede9f8d8 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/ApplicationConfig.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/ApplicationConfig.java @@ -14,4 +14,5 @@ public class ApplicationConfig { private int downloadCleanupDownloadFilesHours; private int downloadCleanupNotDownloadFilesHours; private int softDeleteCleanupTime; + private boolean removeDigitalSignaturesOnUpload; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java index 8ba14616a..c36a86e9f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java @@ -31,4 +31,7 @@ public class ApplicationConfigurationEntity { @Column private int softDeleteCleanupTime = 96; + + @Column + private boolean removeDigitalSignaturesOnUpload; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/MigrateHighlights3.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/MigrateHighlights3.java index 5a90c2a2f..577b29e13 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/MigrateHighlights3.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/MigrateHighlights3.java @@ -4,6 +4,8 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.ProcessUntouchedDocu import com.iqser.red.service.peristence.v1.server.migration.Migration; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; +import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; @@ -32,6 +34,9 @@ public class MigrateHighlights3 extends Migration { @Autowired private FileManagementStorageService fileManagementStorageService; + @Autowired + private ApplicationConfigService applicationConfigService; + public MigrateHighlights3() { super(NAME, VERSION); @@ -63,8 +68,10 @@ public class MigrateHighlights3 extends Migration { fileManagementStorageService.getStoredObjectBytes(dossier.getId(), file.getId(), FileType.ORIGIN)); } + ApplicationConfigurationEntity applicationConfigurationEntity = applicationConfigService.getApplicationConfig(); var response = pdfTronRedactionClient.processUntouchedDocument(ProcessUntouchedDocumentRequest.builder() - .fileName(file.getFilename()).fileId(file.getId()).dossierId(file.getDossierId()).build()); + .fileName(file.getFilename()).fileId(file.getId()).dossierId(file.getDossierId()) + .removeDigitalSignaturesOnUpload(applicationConfigurationEntity.isRemoveDigitalSignaturesOnUpload()).build()); fileStatusPersistenceService.updateHasHighlights(file.getId(), response.isHasHighlights()); } else { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java index 2129c2a45..88ffe47e2 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java @@ -5,9 +5,11 @@ import com.google.common.hash.Hashing; import com.iqser.red.service.pdftron.redaction.v1.api.model.ProcessUntouchedDocumentRequest; import com.iqser.red.service.pdftron.redaction.v1.api.model.UntouchedDocumentResponse; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; 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.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.*; @@ -47,6 +49,7 @@ public class FileService { private final LegalBasisChangePersistenceService legalBasisChangePersistenceService; private final ResizeRedactionPersistenceService resizeRedactionPersistenceService; private final IndexingService indexingService; + private final ApplicationConfigService applicationConfigService; public JSONPrimitive upload(AddFileRequest request) { @@ -67,9 +70,12 @@ public class FileService { } UntouchedDocumentResponse untouchedDocumentResponse; + ApplicationConfigurationEntity applicationConfigurationEntity = applicationConfigService.getApplicationConfig(); try { - untouchedDocumentResponse = pdfTronRedactionClient.processUntouchedDocument(ProcessUntouchedDocumentRequest.builder().dossierId(request.getDossierId()) - .fileId(request.getFileId()).fileName(request.getFilename()).build()); + untouchedDocumentResponse = pdfTronRedactionClient.processUntouchedDocument(ProcessUntouchedDocumentRequest.builder() + .dossierId(request.getDossierId()) + .fileId(request.getFileId()).fileName(request.getFilename()) + .removeDigitalSignaturesOnUpload(applicationConfigurationEntity.isRemoveDigitalSignaturesOnUpload()).build()); } catch (FeignException e) { log.warn("Failed to optimize file: {}", request.getFilename(), e); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/28-add-remove-digital-signatures-on-upload.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/28-add-remove-digital-signatures-on-upload.changelog.yaml new file mode 100644 index 000000000..0ab67c11b --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/28-add-remove-digital-signatures-on-upload.changelog.yaml @@ -0,0 +1,12 @@ +databaseChangeLog: + - changeSet: + id: add-remove-digital-signatures-on-upload + author: corina + changes: + - addColumn: + columns: + - column: + name: remove_digital_signatures_on_upload + type: BOOLEAN + defaultValue: false + tableName: application_configuration diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index a6ef2f15e..6866440dd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -67,3 +67,5 @@ databaseChangeLog: file: db/changelog/sql/26-initiliaze-application-configuration-table.sql - include: file: db/changelog/sql/27-update-soft-delete-date.sql + - include: + file: db/changelog/28-add-remove-digital-signatures-on-upload.changelog.yaml diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java index 1d6100280..74b1a1ccb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java @@ -16,16 +16,18 @@ public class ApplicationConfigTest extends AbstractPersistenceServerServiceTest @Test public void testAppConfig() { ApplicationConfig appConfig = new ApplicationConfig().builder() - .downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).build(); + .downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).removeDigitalSignaturesOnUpload(true).build(); var result = appConfigClient.createOrUpdateAppConfig(appConfig); assertThat(result.getSoftDeleteCleanupTime()).isEqualTo(appConfig.getSoftDeleteCleanupTime()); assertThat(result.getDownloadCleanupDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupDownloadFilesHours()); assertThat(result.getDownloadCleanupNotDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupNotDownloadFilesHours()); + assertThat(result.isRemoveDigitalSignaturesOnUpload()).isEqualTo(appConfig.isRemoveDigitalSignaturesOnUpload()); var getResult = appConfigClient.getCurrentApplicationConfig(); assertThat(getResult.getSoftDeleteCleanupTime()).isEqualTo(appConfig.getSoftDeleteCleanupTime()); assertThat(getResult.getDownloadCleanupDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupDownloadFilesHours()); assertThat(getResult.getDownloadCleanupNotDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupNotDownloadFilesHours()); + assertThat(result.isRemoveDigitalSignaturesOnUpload()).isEqualTo(appConfig.isRemoveDigitalSignaturesOnUpload()); appConfig.setDownloadCleanupDownloadFilesHours(16); appConfig.setDownloadCleanupNotDownloadFilesHours(80); @@ -36,5 +38,6 @@ public class ApplicationConfigTest extends AbstractPersistenceServerServiceTest assertThat(getResult.getSoftDeleteCleanupTime()).isEqualTo(appConfig.getSoftDeleteCleanupTime()); assertThat(getResult.getDownloadCleanupDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupDownloadFilesHours()); assertThat(getResult.getDownloadCleanupNotDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupNotDownloadFilesHours()); + assertThat(result.isRemoveDigitalSignaturesOnUpload()).isEqualTo(appConfig.isRemoveDigitalSignaturesOnUpload()); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index ce840b3cb..9a004135e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -7,7 +7,9 @@ import static org.mockito.Mockito.when; import com.iqser.red.service.pdftron.redaction.v1.api.model.ByteContentDocument; import com.iqser.red.service.pdftron.redaction.v1.api.model.UntouchedDocumentResponse; +import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.ApplicationConfig; import org.assertj.core.util.Lists; import org.junit.After; import org.junit.Before; @@ -66,6 +68,8 @@ public abstract class AbstractPersistenceServerServiceTest { @MockBean protected PDFTronRedactionClient pdfTronRedactionClient; @Autowired + protected ApplicationConfigClient appConfigClient; + @Autowired protected StorageService storageService; @Autowired protected DossierTemplateRepository dossierTemplateRepository; @@ -138,7 +142,15 @@ public abstract class AbstractPersistenceServerServiceTest { @Before public void setupOptimize() { + ApplicationConfig appConfig = new ApplicationConfig().builder() + .downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).removeDigitalSignaturesOnUpload(true).build(); + appConfigClient.createOrUpdateAppConfig(appConfig); +// when(appConfigClient.getCurrentApplicationConfig()).thenReturn(ApplicationConfig.builder() +// .downloadCleanupDownloadFilesHours(8) +// .downloadCleanupNotDownloadFilesHours(72) +// .softDeleteCleanupTime(96) +// .removeDigitalSignaturesOnUpload(true).build()); doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any()); when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null); diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index fc9fd74f1..282dcc9f1 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -27,7 +27,7 @@ 3.114.0 2.36.0 - 3.80.0 + 3.83.0 3.45.0