import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
+import javax.json.stream.JsonParsingException;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.component.restlet.RestletConstants;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
import org.onap.aai.restclient.enums.RestAuthenticationMode;
+import org.onap.aai.sparky.config.SparkyResourceLoader;
import org.onap.aai.sparky.dal.ElasticSearchAdapter;
import org.onap.aai.sparky.dal.rest.RestClientConstructionException;
import org.onap.aai.sparky.dal.rest.config.RestEndpointConfig;
import org.onap.aai.sparky.search.filters.entity.DiscoverFiltersRequest;
import org.onap.aai.sparky.search.filters.entity.ViewConfiguration;
import org.onap.aai.sparky.search.filters.entity.ViewFilter;
+import org.onap.aai.sparky.util.HttpServletHelper;
import org.onap.aai.sparky.util.NodeUtils;
+import org.onap.aai.sparky.util.SparkyTestConstants;
import org.onap.aai.sparky.search.filters.config.FiltersForViewsConfig;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
+import org.springframework.core.io.DefaultResourceLoader;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
public class FilterProcessorTest {
private FilterProcessor filterProcessor;
- private Exchange mockExchange;
- private Message mockRequestMessage;
- private Message mockResponseMessage;
- private Request mockRestletRequest;
- private Response mockRestletResponse;
private FilteredSearchHelper filteredSearchHelper;
private ObjectMapper mapper;
private RestEndpointConfig restEndpointConfig;
+
+ private Exchange exchange;
+ private CamelContext camelContext;
+ private Message mockRequestMessage;
+
protected UiViewListItemConfig generateViewConfig(ViewConfiguration viewConfig) {
@Before
public void init()throws RestClientConstructionException {
- mockExchange = Mockito.mock(Exchange.class);
+
+ camelContext = new DefaultCamelContext();
+ exchange = new DefaultExchange(camelContext);
+
mockRequestMessage = Mockito.mock(Message.class);
- mockResponseMessage = Mockito.mock(Message.class);
- mockRestletRequest = Mockito.mock(Request.class);
- mockRestletResponse = Mockito.mock(Response.class);
+
+ exchange.setIn(mockRequestMessage);
-//TODO-> edit the following:FilteredSearchHelper & FilterProcessor to pass in the correct parameters
+ //TODO-> edit the following:FilteredSearchHelper & FilterProcessor to pass in the correct parameters
restEndpointConfig = new RestEndpointConfig();
restEndpointConfig.setRestAuthenticationMode(RestAuthenticationMode.SSL_BASIC);
filteredSearchHelper = new FilteredSearchHelper(new FiltersConfig(),
assertNull(filterProcessor.getFilteredSearchHelper());
}
- private void verifyResponseAndNumFiltersForBadRequest(Status expectedStatus, int numExpectedFilters)
+ private void verifyResponseAndNumFiltersForBadRequest(Exchange exchange, Status expectedStatus, int numExpectedFilters)
throws JsonParseException, JsonMappingException, IOException {
- ArgumentCaptor<Status> responseCodeCaptor = ArgumentCaptor.forClass(Status.class);
- Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture());
- assertEquals(expectedStatus, responseCodeCaptor.getValue());
-
- ArgumentCaptor<String> entityPayload = ArgumentCaptor.forClass(String.class);
- ArgumentCaptor<MediaType> payloadMediaType = ArgumentCaptor.forClass(MediaType.class);
- Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setEntity(entityPayload.capture(), payloadMediaType.capture());
- assertNotNull(entityPayload.getValue());
-
- ArgumentCaptor<Response> responseObject = ArgumentCaptor.forClass(Response.class);
- Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(responseObject.capture());
- assertEquals(MediaType.APPLICATION_JSON, payloadMediaType.getValue());
+ assertEquals(expectedStatus.getCode(), exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
+
+ String entityPayload = exchange.getOut().getBody(String.class);
+ assertNotNull(entityPayload);
- JsonReader jsonReader = Json.createReader(new StringReader(entityPayload.getValue()));
+ JsonReader jsonReader = Json.createReader(new StringReader(entityPayload));
JsonObject responsePayload = jsonReader.readObject();
JsonObject filters = responsePayload.getJsonObject("filters");
assertEquals(0, filters.size());
}
- private void initializeMocks(String requestPayload) {
+ private void initializeMocks(String requestPayload) throws IOException {
+
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ if ( requestPayload != null) {
+ HttpServletHelper.setRequestPayload(request, "application/json", requestPayload);
+ }
- Mockito.when(mockRequestMessage.getBody(String.class)).thenReturn(requestPayload);
+ Mockito.when(request.getRequestURI()).thenReturn("fakeUri");
+ Mockito.when(request.getLocalPort()).thenReturn(8001);
+ Mockito.when(mockRequestMessage.getBody(Mockito.eq(HttpServletRequest.class))).thenReturn(request);
+ Mockito.when(mockRequestMessage.getBody(Mockito.eq(String.class))).thenReturn(requestPayload);
- Mockito.when(mockExchange.getIn()).thenReturn(mockRequestMessage);
- Mockito.when(mockExchange.getOut()).thenReturn(mockResponseMessage);
+ SparkyResourceLoader resourceLoader = new SparkyResourceLoader();
+ resourceLoader.setResourceLoader(new DefaultResourceLoader());
- Mockito.when(mockRequestMessage.getHeader(RestletConstants.RESTLET_REQUEST, Request.class))
- .thenReturn(mockRestletRequest);
- Mockito.when(mockRequestMessage.getHeader(RestletConstants.RESTLET_RESPONSE, Response.class))
- .thenReturn(mockRestletResponse);
+ filterProcessor.setFilteredSearchHelper(filteredSearchHelper);
+
+ FiltersConfig filtersConfig = new FiltersConfig();
+ filtersConfig.initializeFiltersDetailsConfig(resourceLoader.getResourceAsFile(SparkyTestConstants.FILTERS_JSON_FILE, false));
+ filtersConfig.initializeFiltersForViewsConfig(resourceLoader.getResourceAsFile(SparkyTestConstants.VIEWS_JSON_FILE, false));
+
+ filteredSearchHelper.setFiltersConfig(filtersConfig);
+
}
initializeMocks(NodeUtils.convertObjectToJson(vnfSearchrequest, false));
// Test call against 'vnfSearch'
- filterProcessor.getFiltersWithValues(mockExchange);
-
- ArgumentCaptor<Status> vnfResponseCodeCaptor = ArgumentCaptor.forClass(Status.class);
- Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(vnfResponseCodeCaptor.capture());
- assertEquals(Status.SUCCESS_OK, vnfResponseCodeCaptor.getValue());
+ filterProcessor.getFiltersWithValues(exchange);
- ArgumentCaptor<String> vnfEntityPayload = ArgumentCaptor.forClass(String.class);
- ArgumentCaptor<MediaType> vnfPayloadMediaType = ArgumentCaptor.forClass(MediaType.class);
- Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setEntity(vnfEntityPayload.capture(), vnfPayloadMediaType.capture());
- assertNotNull(vnfEntityPayload.getValue());
-
- ArgumentCaptor<Response> vnfResponseObject = ArgumentCaptor.forClass(Response.class);
- Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(vnfResponseObject.capture());
- assertEquals(MediaType.APPLICATION_JSON, vnfPayloadMediaType.getValue());
+ assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
- JsonReader vnfJsonReader = Json.createReader(new StringReader(vnfEntityPayload.getValue()));
+ String entityPayload = exchange.getOut().getBody(String.class);
+ assertNotNull(entityPayload);
+
+ JsonReader vnfJsonReader = Json.createReader(new StringReader(entityPayload));
JsonObject vnfResponsePayload = vnfJsonReader.readObject();
JsonObject vnfFilters = vnfResponsePayload.getJsonObject("filters");
initializeMocks(NodeUtils.convertObjectToJson(dataIntegrityRequest, false));
// Test call against 'dataIntegrity'
- filterProcessor.getFiltersWithValues(mockExchange);
+ filterProcessor.getFiltersWithValues(exchange);
- ArgumentCaptor<Status> dIResponseCodeCaptor = ArgumentCaptor.forClass(Status.class);
- Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(dIResponseCodeCaptor.capture());
- assertEquals(Status.SUCCESS_OK, dIResponseCodeCaptor.getValue());
-
- ArgumentCaptor<String> dIEntityPayload = ArgumentCaptor.forClass(String.class);
- ArgumentCaptor<MediaType> dIPayloadMediaType = ArgumentCaptor.forClass(MediaType.class);
- Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setEntity(dIEntityPayload.capture(), dIPayloadMediaType.capture());
- assertNotNull(dIEntityPayload.getValue());
-
- ArgumentCaptor<Response> dIResponseObject = ArgumentCaptor.forClass(Response.class);
- Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(dIResponseObject.capture());
- assertEquals(MediaType.APPLICATION_JSON, dIPayloadMediaType.getValue());
+ assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
- JsonReader dIJsonReader = Json.createReader(new StringReader(dIEntityPayload.getValue()));
+ entityPayload = exchange.getOut().getBody(String.class);
+ assertNotNull(entityPayload);
+
+ JsonReader dIJsonReader = Json.createReader(new StringReader(entityPayload));
JsonObject dIResponsePayload = dIJsonReader.readObject();
JsonObject dIFilters = dIResponsePayload.getJsonObject("filters");
initializeMocks(NodeUtils.convertObjectToJson(discoverFiltersRequest, false));
// Method under test
- filterProcessor.getFiltersWithValues(mockExchange);
+ filterProcessor.getFiltersWithValues(exchange);
- verifyResponseAndNumFiltersForBadRequest(Status.SUCCESS_OK, 0);
+ verifyResponseAndNumFiltersForBadRequest(exchange, Status.CLIENT_ERROR_NOT_FOUND, 0);
}
@Test
initializeMocks(NodeUtils.convertObjectToJson(discoverFiltersRequest, false));
// Method under test
- filterProcessor.getFiltersWithValues(mockExchange);
+ filterProcessor.getFiltersWithValues(exchange);
- verifyResponseAndNumFiltersForBadRequest(Status.SUCCESS_OK, 0);
+ verifyResponseAndNumFiltersForBadRequest(exchange, Status.CLIENT_ERROR_NOT_FOUND, 0);
}
@Test
initializeMocks(null);
// Method under test
- filterProcessor.getFiltersWithValues(mockExchange);
+ filterProcessor.getFiltersWithValues(exchange);
- verifyResponseAndNumFiltersForBadRequest(Status.SUCCESS_OK, 0);
+ verifyResponseAndNumFiltersForBadRequest(exchange, Status.CLIENT_ERROR_NOT_FOUND, 0);
}
@Test
initializeMocks("");
// Method under test
- filterProcessor.getFiltersWithValues(mockExchange);
+ filterProcessor.getFiltersWithValues(exchange);
- verifyResponseAndNumFiltersForBadRequest(Status.SUCCESS_OK, 0);
+ verifyResponseAndNumFiltersForBadRequest(exchange, Status.CLIENT_ERROR_NOT_FOUND, 0);
}
- @Test
+ @Test(expected=JsonParsingException.class)
public void testGetFiltersWithValues_requestPayloadCausesException() throws IOException {
initializeMocks("{");
// Method under test
- filterProcessor.getFiltersWithValues(mockExchange);
+ filterProcessor.getFiltersWithValues(exchange);
- verifyResponseAndNumFiltersForBadRequest(Status.SUCCESS_OK, 0);
+ verifyResponseAndNumFiltersForBadRequest(exchange, Status.SERVER_ERROR_INTERNAL, 0);
}
}