Merge branch 'hotfix-rm-migration' into 'master'
RM migration creating unnecessary date formats table entries See merge request redactmanager/persistence-service!772
This commit is contained in:
commit
ec10bbdf8b
@ -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<DossierTemplateEntity> 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());
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -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<KeycloakSecurity> 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<KeycloakSecurity> 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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user