more tests

This commit is contained in:
Timo Bejan 2021-09-20 09:01:35 +03:00
parent a85fc61971
commit ddee07b55d
12 changed files with 208 additions and 8 deletions

View File

@ -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<T> {
private final T value;
public static <T> JSONPrimitive<T> of(T value){
public static <T> JSONPrimitive<T> of(T value) {
return new JSONPrimitive<>(value);
}

View File

@ -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;

View File

@ -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"));
}
}

View File

@ -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) {

View File

@ -12,7 +12,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class DownloadJob {
String userId;
String storageId;
private String userId;
private String storageId;
}

View File

@ -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 {
}

View File

@ -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 {
}

View File

@ -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 {
}

View File

@ -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"));
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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();
}
}