package rocks.inspectit.shared.cs.ci.business.valuesource.impl; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasItemInArray; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import java.util.HashMap; import java.util.Map; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.testng.annotations.Test; import rocks.inspectit.shared.all.communication.data.HttpTimerData; import rocks.inspectit.shared.all.communication.data.InvocationSequenceData; import rocks.inspectit.shared.all.communication.data.TimerData; import rocks.inspectit.shared.all.testbase.TestBase; import rocks.inspectit.shared.cs.cmr.service.cache.CachedDataService; /** * @author Alexander Wert * */ @SuppressWarnings("PMD") public class HttpParameterValueSourceTest extends TestBase { @InjectMocks HttpParameterValueSource valueSource; @Mock CachedDataService cachedDataService; @Mock InvocationSequenceData invocationSeuence; @Mock HttpTimerData httpTimerData; /** * Test * {@link HttpParameterValueSource#getStringValues(InvocationSequenceData, rocks.inspectit.shared.all.cmr.service.ICachedDataService)} * . */ public static class GetStringVlaues extends HttpParameterValueSourceTest { private static final String PARAMETER_NAME_1 = "parameter1"; private static final String PARAMETER_NAME_2 = "parameter2"; private static final String VALUE_A = "valueA"; private static final String VALUE_B = "valueB"; private static final String VALUE_C = "valueC"; private static final String VALUE_D = "valueD"; @Test public void retrieveFirstParameter() { Mockito.doReturn(httpTimerData).when(invocationSeuence).getTimerData(); Map<String, String[]> parameterMap = new HashMap<>(); parameterMap.put(PARAMETER_NAME_1, new String[] { VALUE_A, VALUE_B }); parameterMap.put(PARAMETER_NAME_2, new String[] { VALUE_C, VALUE_D }); Mockito.doReturn(parameterMap).when(httpTimerData).getParameters(); valueSource.setParameterName(PARAMETER_NAME_1); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, hasItemInArray(VALUE_A)); assertThat(values, hasItemInArray(VALUE_B)); assertThat(values, not(hasItemInArray(VALUE_C))); assertThat(values, not(hasItemInArray(VALUE_D))); } @Test public void retrieveSecondParameter() { Mockito.doReturn(httpTimerData).when(invocationSeuence).getTimerData(); Map<String, String[]> parameterMap = new HashMap<>(); parameterMap.put(PARAMETER_NAME_1, new String[] { VALUE_A, VALUE_B }); parameterMap.put(PARAMETER_NAME_2, new String[] { VALUE_C, VALUE_D }); Mockito.doReturn(parameterMap).when(httpTimerData).getParameters(); valueSource.setParameterName(PARAMETER_NAME_2); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, hasItemInArray(VALUE_C)); assertThat(values, hasItemInArray(VALUE_D)); assertThat(values, not(hasItemInArray(VALUE_A))); assertThat(values, not(hasItemInArray(VALUE_B))); } @Test public void noHttpData() { Mockito.doReturn(new TimerData()).when(invocationSeuence).getTimerData(); valueSource.setParameterName(PARAMETER_NAME_2); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); } @Test public void noHttpParameter() { Mockito.doReturn(httpTimerData).when(invocationSeuence).getTimerData(); Mockito.doReturn(new HashMap<>()).when(httpTimerData).getParameters(); valueSource.setParameterName(PARAMETER_NAME_2); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); } @Test public void noRequiredHttpParameter() { Mockito.doReturn(httpTimerData).when(invocationSeuence).getTimerData(); Map<String, String[]> parameterMap = new HashMap<>(); parameterMap.put(PARAMETER_NAME_1, new String[] { VALUE_A, VALUE_B }); Mockito.doReturn(parameterMap).when(httpTimerData).getParameters(); valueSource.setParameterName(PARAMETER_NAME_2); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); } } }