RED-2431 Bugfix: Allow only ASCII character in watermark text and extended watermark test
This commit is contained in:
parent
f78cc5816a
commit
1746b1ac44
@ -1,42 +1,64 @@
|
|||||||
package com.iqser.red.service.persistence.management.v1.processor.service;
|
package com.iqser.red.service.persistence.management.v1.processor.service;
|
||||||
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
import javax.transaction.Transactional;
|
||||||
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 org.apache.commons.lang3.StringUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.transaction.Transactional;
|
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||||
|
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 lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class WatermarkService {
|
public class WatermarkService {
|
||||||
|
|
||||||
|
|
||||||
private final WatermarkRepository watermarkRepository;
|
private final WatermarkRepository watermarkRepository;
|
||||||
|
|
||||||
|
|
||||||
public void deleteWatermark(String dossierTemplateId) {
|
public void deleteWatermark(String dossierTemplateId) {
|
||||||
|
|
||||||
watermarkRepository.deleteById(dossierTemplateId);
|
watermarkRepository.deleteById(dossierTemplateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public WatermarkEntity getWatermark(String dossierTemplateId) {
|
public WatermarkEntity getWatermark(String dossierTemplateId) {
|
||||||
return watermarkRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("Watermark Configuration not found"));
|
|
||||||
|
return watermarkRepository.findById(dossierTemplateId)
|
||||||
|
.orElseThrow(() -> new NotFoundException("Watermark Configuration not found"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public WatermarkEntity saveWatermark(String dossierTemplateId, WatermarkEntity watermark) {
|
public WatermarkEntity saveWatermark(String dossierTemplateId, WatermarkEntity watermark) {
|
||||||
|
|
||||||
watermarkRepository.findById(dossierTemplateId).ifPresentOrElse(
|
validateWatermark(watermark);
|
||||||
loadedWatermark -> BeanUtils.copyProperties(watermark, loadedWatermark, "dossierTemplateId")
|
watermarkRepository.findById(dossierTemplateId)
|
||||||
, () -> {
|
.ifPresentOrElse(loadedWatermark -> BeanUtils.copyProperties(watermark, loadedWatermark, "dossierTemplateId"), () -> {
|
||||||
watermark.setDossierTemplateId(dossierTemplateId);
|
watermark.setDossierTemplateId(dossierTemplateId);
|
||||||
watermarkRepository.save(watermark);
|
watermarkRepository.save(watermark);
|
||||||
});
|
});
|
||||||
|
|
||||||
return watermarkRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("Watermark not found"));
|
return watermarkRepository.findById(dossierTemplateId)
|
||||||
|
.orElseThrow(() -> new NotFoundException("Watermark not found"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void validateWatermark(WatermarkEntity watermark) {
|
||||||
|
|
||||||
|
if (watermark == null) {
|
||||||
|
throw new BadRequestException("The watermark may not be null");
|
||||||
|
}
|
||||||
|
if (!StringUtils.isAsciiPrintable(StringUtils.normalizeSpace(watermark.getText()))) {
|
||||||
|
throw new BadRequestException("The watermark may only contain ASCII characters");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,18 @@
|
|||||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.Assert.assertThrows;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient;
|
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.service.DossierTemplateTesterAndProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation;
|
||||||
import feign.FeignException;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import feign.FeignException;
|
||||||
|
|
||||||
public class WatermarkTest extends AbstractPersistenceServerServiceTest {
|
public class WatermarkTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
@ -19,6 +22,7 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WatermarkClient watermarkClient;
|
private WatermarkClient watermarkClient;
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWatermark() {
|
public void testWatermark() {
|
||||||
|
|
||||||
@ -29,9 +33,8 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest {
|
|||||||
assertThat(e.status()).isEqualTo(404);
|
assertThat(e.status()).isEqualTo(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Watermark watermark = new Watermark();
|
Watermark watermark = new Watermark();
|
||||||
watermark.setText("lorem ipsum");
|
watermark.setText("Minions ipsum chasy para tu la bodaaa bananaaaa hana dul sae. Chasy hana dul sae pepete hana dul sae belloo! Tatata bala tu ti aamoo! Jeje.");
|
||||||
watermark.setFontSize(12);
|
watermark.setFontSize(12);
|
||||||
watermark.setFontType("font");
|
watermark.setFontType("font");
|
||||||
watermark.setHexColor("#dddddd");
|
watermark.setHexColor("#dddddd");
|
||||||
@ -52,8 +55,53 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest {
|
|||||||
} catch (FeignException.FeignClientException e) {
|
} catch (FeignException.FeignClientException e) {
|
||||||
assertThat(e.status()).isEqualTo(404);
|
assertThat(e.status()).isEqualTo(404);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWatermarkTextWithWrongText() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
var watermarkText = "This is not an ASCII text äöüÄÖÜéèê... \nand many more...\r May the force with you! ";
|
||||||
|
|
||||||
|
Watermark watermark = new Watermark();
|
||||||
|
watermark.setFontSize(12);
|
||||||
|
watermark.setFontType("font");
|
||||||
|
watermark.setHexColor("#dddddd");
|
||||||
|
watermark.setOpacity(20);
|
||||||
|
watermark.setOrientation(WatermarkOrientation.DIAGONAL);
|
||||||
|
watermark.setText(watermarkText);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
FeignException exception = assertThrows(FeignException.class, () -> watermarkClient.saveWatermark(dossierTemplate.getId(), watermark));
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat(exception.status()).isEqualTo(400);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWatermarkTextWithCorrectText() {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
var watermarkText = "We love ASCII!\n\nThis text contains only ASCII chars and newlines\r\r\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
|
||||||
|
|
||||||
|
Watermark watermark = new Watermark();
|
||||||
|
watermark.setFontSize(12);
|
||||||
|
watermark.setFontType("font");
|
||||||
|
watermark.setHexColor("#dddddd");
|
||||||
|
watermark.setOpacity(20);
|
||||||
|
watermark.setOrientation(WatermarkOrientation.DIAGONAL);
|
||||||
|
watermark.setText(watermarkText);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var saved = watermarkClient.saveWatermark(dossierTemplate.getId(), watermark);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat(watermarkClient.getWatermark(dossierTemplate.getId())).isEqualTo(saved);
|
||||||
|
assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkText);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user