From b184217099ed0daf813187f3c74f75185e4a5b7b Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Wed, 9 Oct 2024 10:34:39 +0200 Subject: [PATCH] RM migration creating unnecessary date formats table entries --- .../AddDateFormatsToTemplatesMigration25.java | 12 +- ...DateFormatsToTemplatesMigration25Test.java | 2 + .../tests/ComponentControllerV2Test.java | 106 ++++++++++++++++++ .../integration/tests/ComponentTest.java | 53 --------- 4 files changed, 119 insertions(+), 54 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentControllerV2Test.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentTest.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java index 02484e358..717ad3020 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; @@ -33,6 +34,10 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration { @Autowired DossierTemplatePersistenceService dossierTemplatePersistenceService; + + @Value("${application.type}") + private String applicationType; + public AddDateFormatsToTemplatesMigration25() { super(NAME, VERSION); @@ -43,13 +48,18 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration { @SneakyThrows protected void migrate() { + if(!applicationType.equalsIgnoreCase("DocuMine")){ + log.info("Skipping AddDateFormatsToTemplatesMigration25 as application type is not DocuMine!!!"); + return; + } + List allDossierTemplates = dossierTemplatePersistenceService.getAllDossierTemplates(); allDossierTemplates.forEach(dt -> { Resource resource = new ClassPathResource("files/dateFormats.txt"); try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) { String dateFormats = reader.lines().collect(Collectors.joining(System.lineSeparator())); - dateFormatsPersistenceService.setDateFormats(dateFormats, dt.getId(), 0); + dateFormatsPersistenceService.setDateFormats(dateFormats, dt.getId(), -1); } catch (Exception e) { log.info("Could not update dossier template {}, error: {}", dt.getId(), e.getMessage()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AddDateFormatsToTemplatesMigration25Test.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AddDateFormatsToTemplatesMigration25Test.java index b51e17b2f..e77086113 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AddDateFormatsToTemplatesMigration25Test.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AddDateFormatsToTemplatesMigration25Test.java @@ -15,6 +15,7 @@ import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.TestPropertySource; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; @@ -25,6 +26,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import lombok.SneakyThrows; +@TestPropertySource(properties = {"application.type=DocuMine"}) public class AddDateFormatsToTemplatesMigration25Test extends AbstractPersistenceServerServiceTest { private static final String USER_ID = "TestUserId"; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentControllerV2Test.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentControllerV2Test.java new file mode 100644 index 000000000..e599aa426 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentControllerV2Test.java @@ -0,0 +1,106 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.MockitoAnnotations; + +import java.util.Collections; +import java.util.Optional; +import java.util.Set; + +import com.iqser.red.persistence.service.v1.external.api.impl.controller.StatusController; +import com.iqser.red.persistence.service.v2.external.api.impl.controller.ComponentControllerV2; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotAllowedException; +import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService; +import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; +import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; +import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; + +public class ComponentControllerV2Test { + + public static final String USER_ID = "user-111"; + public static final String FILE_ID = "file-789"; + public static final String DOSSIER_ID = "dossier-456"; + public static final String DOSSIER_TEMPLATE_ID = "template-123"; + @InjectMocks + private ComponentControllerV2 componentControllerV2; + @Mock + private UserService userService; + @Mock + private ComponentLogService componentLogService; + @Mock + private FileStatusService fileStatusService; + @Mock + private DossierTemplatePersistenceService dossierTemplatePersistenceService; + @Mock + private StatusController statusController; + + @Mock + private ComponentLog mockComponentLog; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + void shouldThrowNotAllowedExceptionIfUserHasInvalidRoles() { + + User invalidUser = new User(); + invalidUser.setUserId(USER_ID); + invalidUser.setRoles(Set.of("NON_ELIGIBLE_ROLE")); + + when(userService.getUserById(USER_ID)).thenReturn(Optional.of(invalidUser)); + + try (MockedStatic keycloakSecurityMock = mockStatic(KeycloakSecurity.class)) { + keycloakSecurityMock.when(KeycloakSecurity::getUserId).thenReturn(USER_ID); + + assertThrows(NotAllowedException.class, () -> { + componentControllerV2.getComponents(DOSSIER_TEMPLATE_ID, DOSSIER_ID, FILE_ID, false); + }); + } + } + + + + @Test + void shouldNotThrowNotAllowedExceptionIfUserHasValidRoles() { + + + User validUser = new User(); + validUser.setUserId(USER_ID); + validUser.setRoles(Set.of("RED_USER")); + + User validManager = new User(); + validManager.setUserId(USER_ID); + validManager.setRoles(Set.of("RED_MANAGER")); + + when(componentLogService.getComponentLog(DOSSIER_ID, FILE_ID)).thenReturn(mockComponentLog); + + when(mockComponentLog.getComponentLogEntries()).thenReturn(Collections.emptyList()); + + when(fileStatusService.getFileName(FILE_ID)).thenReturn("mock-file-name"); + + try (MockedStatic keycloakSecurityMock = mockStatic(KeycloakSecurity.class)) { + keycloakSecurityMock.when(KeycloakSecurity::getUserId).thenReturn(USER_ID); + + when(userService.getUserById(USER_ID)).thenReturn(Optional.of(validUser)); + assertDoesNotThrow(() -> { + componentControllerV2.getComponents(DOSSIER_TEMPLATE_ID, DOSSIER_ID, FILE_ID, false); + }); + when(userService.getUserById(USER_ID)).thenReturn(Optional.of(validManager)); + assertDoesNotThrow(() -> { + componentControllerV2.getComponents(DOSSIER_TEMPLATE_ID, DOSSIER_ID, FILE_ID, false); + }); + } + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentTest.java deleted file mode 100644 index 599d3d842..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.peristence.v1.server.integration.client.ComponentClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -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.peristence.v1.server.integration.utils.TokenService; - -import feign.FeignException; - -public class ComponentTest extends AbstractPersistenceServerServiceTest { - - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private DossierTesterAndProvider dossierTesterAndProvider; - - @Autowired - private FileTesterAndProvider fileTesterAndProvider; - - @Autowired - private ComponentClient componentClient; - - @Autowired - private DossierTemplateClient dossierTemplateClient; - - @Autowired - protected TokenService tokenService; - - - @Test - public void testGetComponentLogWithoutAppropriateRoles() { - - var dossier = dossierTesterAndProvider.provideTestDossier(); - var dossierTemplate = dossierTemplateClient.getDossierTemplate(dossier.getDossierTemplateId()); - var file = fileTesterAndProvider.testAndProvideFile(dossier, "filename"); - - Assertions.assertThrows(FeignException.NotFound.class, () -> componentClient.getComponents(dossierTemplate.getId(), dossier.getId(), file.getFileId(), true)); - - tokenService.setUser("manageradmin4@test.com", "secret"); - - Assertions.assertThrows(FeignException.Forbidden.class, () -> componentClient.getComponents(dossierTemplate.getId(), dossier.getId(), file.getFileId(), true)); - - } - -}