diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java index b7ddd096b..8a18c26d4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java @@ -54,6 +54,8 @@ public class DossierService { throw new BadRequestException("Dossier template is not active."); } + validateDossierName(createOrUpdateDossierRequest); + try { return dossierPersistenceService.insert(createOrUpdateDossierRequest); } catch (Exception e) { @@ -68,6 +70,14 @@ public class DossierService { } + private void validateDossierName(CreateOrUpdateDossierRequest createOrUpdateDossierRequest) { + + if (createOrUpdateDossierRequest.getDossierName().length() > 254) { + throw new BadRequestException("Dossier name can not be longer than 254 characters"); + } + } + + public DossierEntity updateDossier(CreateOrUpdateDossierRequest dossierRequest, String dossierId) { var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(dossierRequest.getDossierTemplateId()); @@ -143,6 +153,7 @@ public class DossierService { return dossierPersistenceService.findAllDossiersForDossierTemplateId(dossierTemplateId); } + public Set getAllDossierIdsForDossierTemplateId(String dossierTemplateId) { return dossierPersistenceService.findAllDossierIdsForDossierTemplateId(dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java index f87d39a54..2d289bfce 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java @@ -2,6 +2,8 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.time.OffsetDateTime; import java.util.List; @@ -13,6 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; +import org.testcontainers.shaded.org.apache.commons.lang3.StringUtils; import com.google.common.collect.Sets; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; @@ -522,4 +525,20 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { } + + @Test + public void testCreateDossierWithNameLongerThan254Characters() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + dossierTemplateTesterAndProvider.provideDefaultColors(dossierTemplate.getId()); + + String validName = StringUtils.repeat("a", 254); + dossierTesterAndProvider.provideTestDossier(dossierTemplate, validName); + String invalidName = StringUtils.repeat("a", 255); + + var result = assertThrows(FeignException.class, () -> dossierTesterAndProvider.provideTestDossier(dossierTemplate, invalidName)); + assertTrue(result.getMessage().contains("Dossier name can not be longer than 254 characters")); + } + + }