diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java index ce6cd7f01..d109733ca 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java @@ -1,15 +1,17 @@ package com.iqser.red.service.persistence.service.v1.api.model; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; @Data +@EqualsAndHashCode(of = "value") @RequiredArgsConstructor public class JSONPrimitive { private final T value; - public static JSONPrimitive of(T value){ + public static JSONPrimitive of(T value) { return new JSONPrimitive<>(value); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java index 650a3cc6c..e85122d4d 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.configuration; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import lombok.AllArgsConstructor; import lombok.Data; @@ -30,6 +31,7 @@ public class Watermark { @Column private WatermarkOrientation orientation; + @JsonIgnore @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "dossier_template_id") private DossierTemplate dossierTemplate; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java index 55edd324a..d09312f49 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java @@ -1,12 +1,15 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Watermark; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Watermark; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; + @Slf4j @Service @RequiredArgsConstructor @@ -24,7 +27,16 @@ public class WatermarkService { return watermarkRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("Watermark Configuration not found")); } - public Watermark saveWatermark(Watermark watermark) { - return watermarkRepository.save(watermark); + @Transactional + public Watermark saveWatermark(String dossierTemplateId, Watermark watermark) { + + watermarkRepository.findById(dossierTemplateId).ifPresentOrElse( + loadedWatermark -> BeanUtils.copyProperties(watermark, loadedWatermark, "dossierTemplateId") + , () -> { + watermark.setDossierTemplateId(dossierTemplateId); + watermarkRepository.save(watermark); + }); + + return watermarkRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("Watermark not found")); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java index d8f1a356d..a53a502a8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java @@ -15,7 +15,7 @@ public class WatermarkController implements WatermarkResource { public Watermark saveWatermark(String dossierTemplateId, @RequestBody Watermark watermark) { - return watermarkService.saveWatermark(watermark); + return watermarkService.saveWatermark(dossierTemplateId, watermark); } public Watermark getWatermark(String dossierTemplateId) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java index 89bfe4de8..c5909918e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java @@ -12,7 +12,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class DownloadJob { - String userId; - String storageId; + private String userId; + private String storageId; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java new file mode 100644 index 000000000..583ba6ee5 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.RulesResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "RulesClient", url = "http://localhost:${server.port}") +public interface RulesClient extends RulesResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SMTPClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SMTPClient.java new file mode 100644 index 000000000..f4bbe7bd5 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SMTPClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.SMTPConfigurationResource; +import org.springframework.cloud.openfeign.FeignClient; + + +@FeignClient(name = "SMTPClient", url = "http://localhost:${server.port}") +public interface SMTPClient extends SMTPConfigurationResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java new file mode 100644 index 000000000..6c48dc7ef --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.WatermarkResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "WatermarkClient", url = "http://localhost:${server.port}") +public interface WatermarkClient extends WatermarkResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java new file mode 100644 index 000000000..3100a4415 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java @@ -0,0 +1,36 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RulesTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private RulesClient rulesClient; + + @Test + public void testRules() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + + rulesClient.setRules(dossierTemplate.getId(), JSONPrimitive.of("lorem ipsum")); + assertThat(rulesClient.getVersion(dossierTemplate.getId())).isEqualTo(1); + assertThat(rulesClient.getRules(dossierTemplate.getId())).isEqualTo(JSONPrimitive.of("lorem ipsum")); + + rulesClient.setRules(dossierTemplate.getId(), JSONPrimitive.of("lorem ipsum dolor sit amet")); + assertThat(rulesClient.getVersion(dossierTemplate.getId())).isEqualTo(2); + assertThat(rulesClient.getRules(dossierTemplate.getId())).isEqualTo(JSONPrimitive.of("lorem ipsum dolor sit amet")); + + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SMTPTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SMTPTest.java new file mode 100644 index 000000000..5cb6caf63 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SMTPTest.java @@ -0,0 +1,52 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.SMTPClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.SMTPConfiguration; +import feign.FeignException; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SMTPTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private SMTPClient smtpClient; + + @Test + public void testSMTP() { + + SMTPConfiguration configuration = new SMTPConfiguration(); + configuration.setUser("test"); + configuration.setPassword("test"); + configuration.setAuth(true); + configuration.setFrom("from"); + configuration.setEnvelopeFrom("from"); + configuration.setHost("host"); + configuration.setPort(123); + configuration.setReplyTo("reply"); + configuration.setStarttls(true); + smtpClient.updateSMTPConfiguration(configuration); + + assertThat(smtpClient.getCurrentSMTPConfiguration(true)).isNotNull(); + + try { + smtpClient.testSMTPConfiguration("test@test.com", configuration); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(400); + } + + smtpClient.clearSMTPConfiguration(); + + try { + smtpClient.getCurrentSMTPConfiguration(true); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + } + + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java new file mode 100644 index 000000000..4843c9282 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java @@ -0,0 +1,58 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Watermark; +import feign.FeignException; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WatermarkTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private WatermarkClient watermarkClient; + + @Test + public void testWatermark() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + try { + watermarkClient.getWatermark(dossierTemplate.getId()); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + Watermark watermark = new Watermark(); + watermark.setText("lorem ipsum"); + watermark.setFontSize(12); + watermark.setFontType("font"); + watermark.setHexColor("#dddddd"); + watermark.setOpacity(20); + watermark.setOrientation(Watermark.WatermarkOrientation.DIAGONAL); + + var saved = watermarkClient.saveWatermark(dossierTemplate.getId(), watermark); + assertThat(watermarkClient.getWatermark(dossierTemplate.getId())).isEqualTo(saved); + + watermark.setFontSize(14); + saved = watermarkClient.saveWatermark(dossierTemplate.getId(), watermark); + assertThat(watermarkClient.getWatermark(dossierTemplate.getId())).isEqualTo(saved); + + watermarkClient.deleteWatermark(dossierTemplate.getId()); + + try { + watermarkClient.getWatermark(dossierTemplate.getId()); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + } + +} 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 488fcb9ff..a28a0f654 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 @@ -5,6 +5,7 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeRespo import com.iqser.red.service.peristence.v1.server.Application; import com.iqser.red.service.peristence.v1.server.client.RedactionClient; import com.iqser.red.service.peristence.v1.server.client.SearchClient; +import com.iqser.red.service.peristence.v1.server.controller.LicenseReportController; import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*; @@ -133,6 +134,15 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired private ImageRecategorizationRepository imageRecategorizationRepository; + @Autowired + private WatermarkRepository watermarkRepository; + + @Autowired + private SMTPRepository smtpRepository; + + @Autowired + private RuleSetRepository ruleSetRepository; + @Autowired private LegalBasisMappingRepository legalBasisMappingRepository; @@ -150,7 +160,10 @@ public abstract class AbstractPersistenceServerServiceTest { removeRedactionRepository.deleteAll(); legalBasisChangeRepository.deleteAll(); imageRecategorizationRepository.deleteAll(); - legalBasisMappingRepository.deleteAll();; + legalBasisMappingRepository.deleteAll(); + watermarkRepository.deleteAll(); + ruleSetRepository.deleteAll(); + smtpRepository.deleteAll(); } }