diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListener.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListener.java index 15e57c40372a94221e4baf52cbce2d238c8589e7..2e6914f930aca7bf90cfc56a8d53250d89c7f1a5 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListener.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListener.java @@ -37,6 +37,4 @@ public interface PropertyUpdateListener { default void updateProperty(SMPPropertyEnum property, Object value) { updateProperties(Collections.singletonMap(property, value)); } - - ; } diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorService.java index 17dc306ec188686f8635e42f6afd03646db1f673..239509e48bcd593037e5535327c4fe95f61dce41 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorService.java @@ -53,7 +53,4 @@ public class PayloadValidatorService { throw new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "Content validation failed", ExceptionUtils.getRootCauseMessage(e),e); } } - - ; - } diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListenerTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListenerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..90dfa6071db5e0fd8c6e1834790f13b981ae6862 --- /dev/null +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyUpdateListenerTest.java @@ -0,0 +1,49 @@ +package eu.europa.ec.edelivery.smp.config; + +import eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyEnum; +import org.junit.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyEnum.ACCESS_TOKEN_FAIL_DELAY; +import static eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyEnum.SMP_PROPERTY_REFRESH_CRON; +import static org.junit.Assert.*; + +public class PropertyUpdateListenerTest { + + PropertyUpdateListener testInstance = Mockito.spy(new PropertyUpdateListener() { + @Override + public void updateProperties(Map<SMPPropertyEnum, Object> properties) { + } + + @Override + public List<SMPPropertyEnum> handledProperties() { + return Collections.singletonList(ACCESS_TOKEN_FAIL_DELAY); + } + }); + + @Test + public void handlesProperty() { + assertTrue(testInstance.handlesProperty(ACCESS_TOKEN_FAIL_DELAY)); + assertFalse(testInstance.handlesProperty(SMP_PROPERTY_REFRESH_CRON)); + } + + @Test + public void updateProperty() { + Mockito.doNothing().when(testInstance).updateProperties(Mockito.anyMap()); + SMPPropertyEnum property = ACCESS_TOKEN_FAIL_DELAY; + String testValue = "test"; + + testInstance.updateProperty(property, testValue); + + ArgumentCaptor<Map<SMPPropertyEnum, Object>> propertyCapture = ArgumentCaptor.forClass(Map.class); + Mockito.verify(testInstance, Mockito.times(1)).updateProperties(propertyCapture.capture()); + assertEquals(1, propertyCapture.getValue().size()); + assertTrue(propertyCapture.getValue().containsKey(ACCESS_TOKEN_FAIL_DELAY)); + assertEquals(testValue, propertyCapture.getValue().get(ACCESS_TOKEN_FAIL_DELAY)); + } +} \ No newline at end of file diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5cdf7798831ef79a2f00f5d6cd3b1b4b3fa49e0e --- /dev/null +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/PayloadValidatorServiceTest.java @@ -0,0 +1,82 @@ +package eu.europa.ec.edelivery.smp.services; + +import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; +import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; +import eu.europa.ec.smp.spi.PayloadValidatorSpi; +import eu.europa.ec.smp.spi.exceptions.PayloadValidatorSpiException; +import org.hamcrest.CoreMatchers; +import org.hamcrest.MatcherAssert; +import org.junit.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.util.MimeTypeUtils; + +import java.io.InputStream; +import java.util.Arrays; +import java.util.Collections; +import java.util.Optional; + +import static org.junit.Assert.*; + +public class PayloadValidatorServiceTest { + + @Test + public void validateUploadedContentNoValidatorsMostNotFail() { + PayloadValidatorService testInstance = new PayloadValidatorService(Optional.empty()); + InputStream inputStream = Mockito.mock(InputStream.class); + + testInstance.validateUploadedContent(inputStream, MimeTypeUtils.APPLICATION_JSON.getType()); + // no error should accrue + } + + @Test + public void validateUploadedContentNoValidatorsMostNotFailEmpty() { + PayloadValidatorService testInstance = new PayloadValidatorService(Optional.of(Collections.emptyList())); + InputStream inputStream = Mockito.mock(InputStream.class); + + testInstance.validateUploadedContent(inputStream, MimeTypeUtils.APPLICATION_JSON.getType()); + // no error should accrue + } + + @Test + public void validateUploadedContent() throws PayloadValidatorSpiException { + PayloadValidatorSpi validatorSpi1 = Mockito.mock(PayloadValidatorSpi.class); + PayloadValidatorSpi validatorSpi2 = Mockito.mock(PayloadValidatorSpi.class); + PayloadValidatorService testInstance = new PayloadValidatorService(Optional.of(Arrays.asList(validatorSpi1,validatorSpi2))); + InputStream inputStream = Mockito.mock(InputStream.class); + String mimeType = MimeTypeUtils.APPLICATION_JSON.getType(); + + + testInstance.validateUploadedContent(inputStream, mimeType); + // no error should accrue + ArgumentCaptor<InputStream> streamCapture1 = ArgumentCaptor.forClass(InputStream.class); + ArgumentCaptor<String> mimeTypeCapture1 = ArgumentCaptor.forClass(String.class); + ArgumentCaptor<InputStream> streamCapture2 = ArgumentCaptor.forClass(InputStream.class); + ArgumentCaptor<String> mimeTypeCapture2 = ArgumentCaptor.forClass(String.class); + Mockito.verify(validatorSpi1, Mockito.times(1)).validatePayload(streamCapture1.capture(), mimeTypeCapture1.capture()); + Mockito.verify(validatorSpi2,Mockito.times(1)).validatePayload(streamCapture2.capture(), mimeTypeCapture2.capture()); + + assertEquals(inputStream, streamCapture1.getValue()); + assertEquals(inputStream, streamCapture2.getValue()); + assertEquals(mimeType, mimeTypeCapture1.getValue()); + assertEquals(mimeType, mimeTypeCapture2.getValue()); + } + + @Test + public void validateUploadedContentThrowException() throws PayloadValidatorSpiException { + PayloadValidatorSpi validatorSpi1 = Mockito.mock(PayloadValidatorSpi.class); + PayloadValidatorService testInstance = new PayloadValidatorService(Optional.of(Arrays.asList(validatorSpi1))); + InputStream inputStream = Mockito.mock(InputStream.class); + String mimeType = MimeTypeUtils.APPLICATION_JSON.getType(); + PayloadValidatorSpiException spiException = new PayloadValidatorSpiException("TestError"); + Mockito.doThrow(spiException).when(validatorSpi1).validatePayload(Mockito.any(),Mockito.any()); + + + SMPRuntimeException smpRuntimeException = + assertThrows(SMPRuntimeException.class, () -> testInstance.validateUploadedContent(inputStream, mimeType)); + + assertEquals(ErrorCode.INVALID_REQUEST, smpRuntimeException.getErrorCode()); + MatcherAssert.assertThat(smpRuntimeException.getMessage(), CoreMatchers.containsString(spiException.getMessage())); + } +} \ No newline at end of file