Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 15cc3bbc authored by Joze RIHTARSIC's avatar Joze RIHTARSIC
Browse files

Add unit tests

parent 4b56ce11
No related branches found
No related tags found
No related merge requests found
......@@ -37,6 +37,4 @@ public interface PropertyUpdateListener {
default void updateProperty(SMPPropertyEnum property, Object value) {
updateProperties(Collections.singletonMap(property, value));
}
;
}
......@@ -53,7 +53,4 @@ public class PayloadValidatorService {
throw new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "Content validation failed", ExceptionUtils.getRootCauseMessage(e),e);
}
}
;
}
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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment