From 1e2388dcae19643fc46a1edc83296627c2b575a9 Mon Sep 17 00:00:00 2001 From: Viktor Seifert Date: Fri, 10 Mar 2023 17:39:53 +0100 Subject: [PATCH 1/3] RED-6310: Updated test for download preparation test to execute all preparation steps. Previously the last step was not executed. --- .../download/DownloadPreparationService.java | 11 ++++- .../RedactionResultMessageReceiver.java | 6 +++ .../tests/DownloadPreparationTest.java | 45 +++++++++++++++++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java index 72b8806ab..d550931eb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java @@ -143,7 +143,7 @@ public class DownloadPreparationService { addReports(reportResultMessage.getDownloadId(), storedFileInformations, fileSystemBackedArchiver); storeZipFile(downloadStatus, fileSystemBackedArchiver); - downloadStatusPersistenceService.updateStatus(downloadStatus.getStorageId(), DownloadStatusValue.READY, fileSystemBackedArchiver.getContentLength()); + updateStatusToReady(downloadStatus, fileSystemBackedArchiver); notificationPersistenceService.insertNotification(AddNotificationRequest.builder() .userId(downloadStatus.getUserId()) @@ -163,6 +163,15 @@ public class DownloadPreparationService { } + private void updateStatusToReady(DownloadStatusEntity downloadStatus, FileSystemBackedArchiver fileSystemBackedArchiver) { + + downloadStatusPersistenceService.updateStatus(downloadStatus.getStorageId(), DownloadStatusValue.READY, fileSystemBackedArchiver.getContentLength()); + if (!Objects.equals(downloadStatus.getStatus(), DownloadStatusValue.READY)) { + downloadStatus.setStatus(DownloadStatusValue.READY); + } + } + + private void generateAndAddFiles(DownloadStatusEntity downloadStatus, RedactionResultMessage reportResultMessage, FileSystemBackedArchiver fileSystemBackedArchiver) { int i = 1; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java index e1210982d..dde5484d2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java @@ -40,6 +40,12 @@ public class RedactionResultMessageReceiver { redactionResultMessage.getDownloadId())); } + receive(redactionResultMessage); + } + + + public void receive(RedactionResultMessage redactionResultMessage) { + log.info("Received redaction results for downloadId:{}", redactionResultMessage.getDownloadId()); downloadPreparationService.createDownload(redactionResultMessage); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java index 16baea5ad..de672524d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.Collections; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -12,6 +13,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; +import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; 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; @@ -21,11 +23,13 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTes 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.service.download.DownloadReportMessageReceiver; +import com.iqser.red.service.persistence.management.v1.processor.service.download.RedactionResultMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.utils.multitenancy.TenantContext; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplate; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; @@ -38,6 +42,9 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes @Autowired private DownloadReportMessageReceiver downloadReportMessageReceiver; + @Autowired + private RedactionResultMessageReceiver redactionResultMessageReceiver; + @Autowired private StorageService storageService; @@ -63,10 +70,19 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes private FileClient fileClient; + @Before + public void before() { + + TenantContext.setTenantId("redaction"); + } + + @Test @SneakyThrows public void testReceiveDownloadPackage() { + String userId = "1"; + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate); @@ -113,17 +129,38 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes assertThat(statuses.getDownloadStatus()).isNotEmpty(); assertThat(statuses.getDownloadStatus().iterator().next().getLastDownload()).isNull(); - // FIXME Check if this is still needed. - // This variable seems to do nothing, if it is not needed it can be removed. + String downloadId = statuses.iterator().next().getStorageId(); + + addStoredFileInformationToStorage(file, availableTemplates, downloadId); + + ReportResultMessage reportResultMessage = new ReportResultMessage(); + reportResultMessage.setUserId(userId); + reportResultMessage.setDownloadId(downloadId); + + downloadReportMessageReceiver.receive(reportResultMessage); + + redactionResultMessageReceiver.receive(RedactionResultMessage.builder() + .downloadId(downloadId) + .dossierId(dossier.getId()) + .redactionResultDetails(Collections.emptyList()) + .build()); + } + + + @SneakyThrows + private void addStoredFileInformationToStorage(FileModel file, List availableTemplates, String downloadId) { + + String reportStorageId = "XYZ"; + var storedFileInformationstorageId = downloadId.substring(0, downloadId.length() - 3) + "/REPORT_INFO.json"; + var sivList = new ArrayList(); var siv = new StoredFileInformation(); siv.setFileId(file.getId()); - siv.setStorageId("XYZ"); + siv.setStorageId(reportStorageId); siv.setTemplateId(availableTemplates.iterator().next().getTemplateId()); sivList.add(siv); - // FIXME Check if this is still needed. storageService.storeObject(TenantContext.getTenantId(), "XYZ", new ByteArrayInputStream(new byte[]{1, 2, 3, 4})); ReportResultMessage reportResultMessage = new ReportResultMessage(); From 550c9c3bf07a43e5f7fbd33c04be7d569589020c Mon Sep 17 00:00:00 2001 From: Viktor Seifert Date: Mon, 13 Mar 2023 16:07:04 +0100 Subject: [PATCH 2/3] RED-6310: Changed element-collection fetch to eager because lazy loading runs into timing based errors --- .../entity/notification/NotificationPreferencesEntity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java index 0f7d88ac5..921089116 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java @@ -6,6 +6,7 @@ import java.util.List; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.Table; @@ -39,11 +40,11 @@ public class NotificationPreferencesEntity { @Column private EmailNotificationType emailNotificationType; - @ElementCollection + @ElementCollection(fetch = FetchType.EAGER) @Fetch(FetchMode.SUBSELECT) private List emailNotifications = new ArrayList<>(); - @ElementCollection + @ElementCollection(fetch = FetchType.EAGER) @Fetch(FetchMode.SUBSELECT) private List inAppNotifications = new ArrayList<>(); From ac5406291ab286d793a23c674ecfe10b069cc734 Mon Sep 17 00:00:00 2001 From: Viktor Seifert Date: Tue, 14 Mar 2023 16:17:23 +0100 Subject: [PATCH 3/3] RED-6310: Fixed and cleaned up test after the merge from release 3.6 --- .../tests/DownloadPreparationTest.java | 179 ++++++++++++------ .../AbstractPersistenceServerServiceTest.java | 26 ++- 2 files changed, 129 insertions(+), 76 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java index de672524d..873fc1f3e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java @@ -9,10 +9,12 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; +import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; @@ -26,54 +28,63 @@ import com.iqser.red.service.persistence.management.v1.processor.service.downloa import com.iqser.red.service.persistence.management.v1.processor.service.download.RedactionResultMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.utils.multitenancy.TenantContext; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; +import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplate; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; +import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatus; import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; import com.iqser.red.storage.commons.service.StorageService; +import lombok.AccessLevel; import lombok.SneakyThrows; +import lombok.experimental.FieldDefaults; +@FieldDefaults(level = AccessLevel.PRIVATE) public class DownloadPreparationTest extends AbstractPersistenceServerServiceTest { + protected static final String USER_ID = "1"; @Autowired - private DownloadReportMessageReceiver downloadReportMessageReceiver; + DownloadReportMessageReceiver downloadReportMessageReceiver; @Autowired - private RedactionResultMessageReceiver redactionResultMessageReceiver; + RedactionResultMessageReceiver redactionResultMessageReceiver; @Autowired - private StorageService storageService; + StorageService storageService; @Autowired - private FileTesterAndProvider fileTesterAndProvider; + FileTesterAndProvider fileTesterAndProvider; @Autowired - private DossierTesterAndProvider dossierTesterAndProvider; + DossierTesterAndProvider dossierTesterAndProvider; @Autowired - private DownloadClient downloadClient; + DownloadClient downloadClient; @Autowired - private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; @Autowired - private ReportTemplateClient reportTemplateClient; + ReportTemplateClient reportTemplateClient; @Autowired - private DossierClient dossierClient; + DossierClient dossierClient; @Autowired - private FileClient fileClient; + FileClient fileClient; + + DossierWithSingleFile testData; - @Before - public void before() { + @BeforeEach + public void createTestData() { - TenantContext.setTenantId("redaction"); + testData = new DossierWithSingleFile(); } @@ -81,78 +92,82 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes @SneakyThrows public void testReceiveDownloadPackage() { - String userId = "1"; + testData.forwardFileToApprovedState(); - var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + uploadMockReportTemplate(testData); - var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate); - - var file = fileTesterAndProvider.testAndProvideFile(dossier); - - fileTesterAndProvider.markFileAsProcessed(file.getFileId()); - - fileClient.setStatusApproved(dossier.getId(), file.getId()); - var file11 = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(file11.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED); - - var template = new MockMultipartFile("test.docx", "zzz".getBytes()); - reportTemplateClient.uploadTemplate(template, dossierTemplate.getDossierTemplateId(), true, true); - - var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); + var availableTemplates = reportTemplateClient.getAvailableReportTemplates(testData.getDossierTemplateId()); assertThat(availableTemplates).isNotEmpty(); - dossierClient.createDossierOrUpdateDossier(DossierRequest.builder() - .dossierId(dossier.getId()) - .dossierName(dossier.getDossierName()) - .description(dossier.getDescription()) - .ownerId(dossier.getOwnerId()) - .memberIds(dossier.getMemberIds()) - .approverIds(dossier.getApproverIds()) - .downloadFileTypes(dossier.getDownloadFileTypes()) - .watermarkId(dossier.getWatermarkId()) - .dueDate(dossier.getDueDate()) - .dossierTemplateId(dossier.getDossierTemplateId()) - .reportTemplateIds(availableTemplates.stream().map(ReportTemplate::getTemplateId).collect(Collectors.toSet())) - .build()); + createDossierInService(testData, availableTemplates); - var updatedDossier = dossierClient.getDossier(dossier.getId(), false, false); + var updatedDossier = dossierClient.getDossier(testData.getDossierId(), false, false); assertThat(updatedDossier.getReportTemplateIds()).isNotEmpty(); downloadClient.prepareDownload(PrepareDownloadWithOptionRequest.builder() - .dossierId(dossier.getId()) + .dossierId(testData.getDossierId()) .downloadFileTypes(Set.of(DownloadFileType.ORIGINAL)) - .fileIds(Collections.singletonList(file.getId())) + .fileIds(Collections.singletonList(testData.file.getId())) .redactionPreviewColor("#aaaaaa") .build()); var statuses = downloadClient.getDownloadStatus(); assertThat(statuses.getDownloadStatus()).isNotEmpty(); - assertThat(statuses.getDownloadStatus().iterator().next().getLastDownload()).isNull(); - String downloadId = statuses.iterator().next().getStorageId(); + DownloadStatus firstDownloadStatus = statuses.getDownloadStatus().iterator().next(); + assertThat(firstDownloadStatus.getLastDownload()).isNull(); - addStoredFileInformationToStorage(file, availableTemplates, downloadId); + String downloadId = firstDownloadStatus.getStorageId(); + + addStoredFileInformationToStorage(testData.file, availableTemplates, downloadId); + + setupTenantContext(); ReportResultMessage reportResultMessage = new ReportResultMessage(); - reportResultMessage.setUserId(userId); + reportResultMessage.setUserId(USER_ID); reportResultMessage.setDownloadId(downloadId); - downloadReportMessageReceiver.receive(reportResultMessage); redactionResultMessageReceiver.receive(RedactionResultMessage.builder() .downloadId(downloadId) - .dossierId(dossier.getId()) + .dossierId(testData.getDossierId()) .redactionResultDetails(Collections.emptyList()) .build()); + + clearTenantContext(); + } + + + private void createDossierInService(DossierWithSingleFile testData, List availableTemplates) { + + dossierClient.createDossierOrUpdateDossier(DossierRequest.builder() + .dossierId(testData.getDossierId()) + .dossierName(testData.dossier.getDossierName()) + .description(testData.dossier.getDescription()) + .ownerId(testData.dossier.getOwnerId()) + .memberIds(testData.dossier.getMemberIds()) + .approverIds(testData.dossier.getApproverIds()) + .downloadFileTypes(testData.dossier.getDownloadFileTypes()) + .watermarkId(testData.dossier.getWatermarkId()) + .dueDate(testData.dossier.getDueDate()) + .dossierTemplateId(testData.dossier.getDossierTemplateId()) + .reportTemplateIds(availableTemplates.stream().map(ReportTemplate::getTemplateId).collect(Collectors.toSet())) + .build()); + } + + + private void uploadMockReportTemplate(DossierWithSingleFile testData) { + + var template = new MockMultipartFile("test.docx", "zzz".getBytes()); + reportTemplateClient.uploadTemplate(template, testData.getDossierTemplateId(), true, true); } @SneakyThrows - private void addStoredFileInformationToStorage(FileModel file, List availableTemplates, String downloadId) { + private void addStoredFileInformationToStorage(FileStatus file, List availableTemplates, String downloadId) { - String reportStorageId = "XYZ"; var storedFileInformationstorageId = downloadId.substring(0, downloadId.length() - 3) + "/REPORT_INFO.json"; - + String reportStorageId = "XYZ"; var sivList = new ArrayList(); var siv = new StoredFileInformation(); @@ -161,15 +176,55 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes siv.setTemplateId(availableTemplates.iterator().next().getTemplateId()); sivList.add(siv); - storageService.storeObject(TenantContext.getTenantId(), "XYZ", new ByteArrayInputStream(new byte[]{1, 2, 3, 4})); + storageService.storeObject(TenantContext.getTenantId(), storedFileInformationstorageId, new ByteArrayInputStream(new ObjectMapper().writeValueAsBytes(sivList))); + storageService.storeObject(TenantContext.getTenantId(), reportStorageId, new ByteArrayInputStream(new byte[]{1, 2, 3, 4})); + } - ReportResultMessage reportResultMessage = new ReportResultMessage(); - reportResultMessage.setUserId("1"); - reportResultMessage.setDownloadId(statuses.getDownloadStatus().iterator().next().getStorageId()); - TenantContext.setTenantId("redaction"); - downloadReportMessageReceiver.receive(reportResultMessage); - TenantContext.clear(); + @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) + private final class DossierWithSingleFile { + + DossierTemplateModel dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + Dossier dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate); + + FileStatus file = fileTesterAndProvider.testAndProvideFile(dossier); + + + public String getDossierTemplateId() { + + return dossierTemplate.getId(); + } + + + public String getDossierId() { + + return dossier.getId(); + } + + + public String getFileId() { + + return file.getFileId(); + } + + + public void forwardFileToApprovedState() { + + fileTesterAndProvider.markFileAsProcessed(getFileId()); + + fileClient.setStatusApproved(getDossierId(), getFileId()); + + assertThatTestFileIsApproved(); + } + + + private void assertThatTestFileIsApproved() { + + var persistedFileStatus = fileClient.getFileStatus(getDossierId(), file.getId()); + assertThat(persistedFileStatus.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED); + } + } } 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 02f72c6d1..d0e86dfeb 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 @@ -19,18 +19,14 @@ import org.keycloak.adapters.springboot.KeycloakSpringBootProperties; import org.mockito.Mockito; import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; -import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.cloud.openfeign.EnableFeignClients; -import org.springframework.cloud.openfeign.support.SpringEncoder; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; @@ -43,7 +39,6 @@ import org.springframework.jdbc.core.StatementCallback; import org.springframework.jdbc.datasource.SingleConnectionDataSource; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.web.client.RestTemplate; import com.iqser.red.keycloak.commons.KeyCloakAdminClientService; import com.iqser.red.keycloak.commons.KeyCloakSettings; @@ -218,16 +213,21 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired private TokenService tokenService; + @BeforeEach - public void setTenant(){ + public void setupTenantContext() { + TenantContext.setTenantId("redaction"); } + @AfterEach - public void clearTenant(){ + public void clearTenantContext() { + TenantContext.clear(); } + public void createUsers() { when(keyCloakAdminClientService.getAdminClient()).thenReturn(KeyCloakTestContainer.getInstance().getKeycloakAdminClient()); @@ -262,6 +262,7 @@ public abstract class AbstractPersistenceServerServiceTest { return user.getUserId(); } + @BeforeEach public void setupOptimize() { @@ -269,11 +270,7 @@ public abstract class AbstractPersistenceServerServiceTest { TenantContext.setTenantId("redaction"); - ApplicationConfig appConfig = new ApplicationConfig().builder() - .downloadCleanupDownloadFilesHours(8) - .downloadCleanupNotDownloadFilesHours(72) - .softDeleteCleanupTime(96) - .build(); + ApplicationConfig appConfig = ApplicationConfig.builder().downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).build(); applicationConfigService.saveApplicationConfiguration(MagicConverter.convert(appConfig, ApplicationConfigurationEntity.class)); TenantContext.clear(); @@ -295,10 +292,10 @@ public abstract class AbstractPersistenceServerServiceTest { private void createDefaultTenant() { - if (!tenantRepository.findById("redaction").isPresent()) { + if (tenantRepository.findById("redaction").isEmpty()) { var postgreSQLContainerMaster = SpringPostgreSQLTestContainer.getInstance().withDatabaseName("integration-tests-db-master").withUsername("sa").withPassword("sa"); - var jdbcUrl = postgreSQLContainerMaster.getJdbcUrl().substring(0, postgreSQLContainerMaster.getJdbcUrl().lastIndexOf('/') + 1) + "redaction?currentSchema=myschema"; + String jdbcUrl = postgreSQLContainerMaster.getJdbcUrl().substring(0, postgreSQLContainerMaster.getJdbcUrl().lastIndexOf('/') + 1) + "redaction?currentSchema=myschema"; var port = postgreSQLContainerMaster.getJdbcUrl().substring(0, postgreSQLContainerMaster.getJdbcUrl().lastIndexOf('/')).split(":")[3]; createDatabase("redaction", "redaction"); @@ -336,6 +333,7 @@ public abstract class AbstractPersistenceServerServiceTest { .build(); tenantManagementService.createTenant(tenantRequest); + } }