Convert Sparky to Spring-Boot
[aai/sparky-be.git] / sparkybe-onap-service / src / test / java / org / onap / aai / sparky / search / UnifiedSearchProcessorTest.java
@@ -33,14 +33,16 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+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.json.JSONArray;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
 import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 import org.onap.aai.sparky.common.search.CommonSearchSuggestion;
 import org.onap.aai.sparky.search.api.SearchProvider;
@@ -48,13 +50,8 @@ import org.onap.aai.sparky.search.entity.MockSearchResponse;
 import org.onap.aai.sparky.search.entity.QuerySearchEntity;
 import org.onap.aai.sparky.search.entity.SearchSuggestion;
 import org.onap.aai.sparky.search.registry.SearchProviderRegistry;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.MediaType;
-import org.restlet.data.Status;
+import org.onap.aai.sparky.util.HttpServletHelper;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 
@@ -124,24 +121,20 @@ public class UnifiedSearchProcessorTest {
   private SearchServiceAdapter mockSearchAdapter;
   
   private UnifiedSearchProcessor unifiedSearchProcessor;
-  private Exchange mockExchange;
   private Message mockRequestMessage;
-  private Message mockResponseMessage;
-  private Request mockRestletRequest;
-  private Response mockRestletResponse;
-  private ClientInfo requestClientInfo;
   private ObjectMapper mapper;
 
+  private Exchange exchange;
+  private CamelContext camelContext;
+  
   @Before
   public void init() {
-
-    requestClientInfo = new ClientInfo();
     
-    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);
 
     unifiedSearchProcessor = new UnifiedSearchProcessor();
     unifiedSearchProcessor.setUseOrderedSearchProviderKeys(true);
@@ -175,17 +168,13 @@ public class UnifiedSearchProcessorTest {
   
   private void initializeSearchMocks(String requestPayload) {
 
-    Mockito.when(mockRestletRequest.getClientInfo()).thenReturn(requestClientInfo);
-
-    Mockito.when(mockRequestMessage.getBody(String.class)).thenReturn(requestPayload);
-    Mockito.when(mockRequestMessage.getHeader(RestletConstants.RESTLET_REQUEST, Request.class))
-        .thenReturn(mockRestletRequest);
-
-    Mockito.when(mockRequestMessage.getHeader(RestletConstants.RESTLET_RESPONSE, Response.class))
-        .thenReturn(mockRestletResponse);
+    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+    HttpServletHelper.setRequestPayload(request, "application/json", requestPayload);
     
-    Mockito.when(mockExchange.getIn()).thenReturn(mockRequestMessage);
-    Mockito.when(mockExchange.getOut()).thenReturn(mockResponseMessage);
+    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);
 
   }
   
@@ -221,23 +210,14 @@ public class UnifiedSearchProcessorTest {
     unifiedSearchProcessor.setSearchProviderRegistry(searchProviderRegistry);
     
     // method under test
-    unifiedSearchProcessor.search(mockExchange);
-
-    ArgumentCaptor<Status> responseCodeCaptor = ArgumentCaptor.forClass(Status.class);
-    Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture());
-    assertEquals(Status.SUCCESS_OK, 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());
+    unifiedSearchProcessor.search(exchange);
+    
+    assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
 
-    ArgumentCaptor<Response> responseObject = ArgumentCaptor.forClass(Response.class);
-    Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(responseObject.capture());
-    assertEquals(MediaType.APPLICATION_JSON, payloadMediaType.getValue());
+    String entityPayload = exchange.getOut().getBody(String.class); 
+    assertNotNull(entityPayload);
 
-    SearchResponse searchResponse = mapper.readValue(entityPayload.getValue(), SearchResponse.class);
+    MockSearchResponse searchResponse = mapper.readValue(entityPayload, MockSearchResponse.class);
 
     assertEquals(0, searchResponse.getTotalFound());
     assertEquals(0, searchResponse.getSuggestions().size());
@@ -262,30 +242,20 @@ public class UnifiedSearchProcessorTest {
     searchProviderRegistry.addSearchProvider(gamma);
     
     unifiedSearchProcessor.setSearchProviderRegistry(searchProviderRegistry);
-    
-    
+
     // method under test
-    unifiedSearchProcessor.search(mockExchange);
+    unifiedSearchProcessor.search(exchange);
     
-    ArgumentCaptor<Status> responseCodeCaptor = ArgumentCaptor.forClass(Status.class);
-    Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture());
-    assertEquals(Status.SUCCESS_OK, responseCodeCaptor.getValue());
+    assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
 
-    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());
+    String entityPayload = exchange.getOut().getBody(String.class); 
+    assertNotNull(entityPayload);
 
-    ArgumentCaptor<Response> responseObject = ArgumentCaptor.forClass(Response.class);
-    Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(responseObject.capture());
-    assertEquals(MediaType.APPLICATION_JSON, payloadMediaType.getValue());
-    
     /*
      * With a null view name, an empty filter set should be returned - there should be 0 filters
      */
-    
-    SearchResponse searchResponse = mapper.readValue(entityPayload.getValue(), SearchResponse.class);
+
+    SearchResponse searchResponse = mapper.readValue(entityPayload, SearchResponse.class);
 
     assertEquals(0, searchResponse.getTotalFound());
     assertEquals(0, searchResponse.getSuggestions().size());
@@ -300,7 +270,7 @@ public class UnifiedSearchProcessorTest {
     }
   }
   
-  private int countSuggestions(String suggestionPrefix, MockSearchResponse response) {
+  private int countSuggestions(String suggestionPrefix, SearchResponse response) {
     
     int totalFound = 0;
     
@@ -315,6 +285,22 @@ public class UnifiedSearchProcessorTest {
     
   }
   
+ private int countSuggestions(String suggestionPrefix, MockSearchResponse response) {
+    
+    int totalFound = 0;
+    
+    for ( SearchSuggestion suggestion : response.getSuggestions()) {
+      
+      if ( suggestion.getText() != null && suggestion.getText().startsWith(suggestionPrefix)) {
+        totalFound++;
+      }
+    }
+    
+    return totalFound;
+    
+  }
+  
+  
   @Test
   public void testSearch_search_when_ThreeSearchProviders_5suggestions_each() throws IOException {
 
@@ -339,23 +325,14 @@ public class UnifiedSearchProcessorTest {
     unifiedSearchProcessor.setSearchProviderRegistry(searchProviderRegistry);
     
     // method under test
-    unifiedSearchProcessor.search(mockExchange);
+    unifiedSearchProcessor.search(exchange);
 
-    ArgumentCaptor<Status> responseCodeCaptor = ArgumentCaptor.forClass(Status.class);
-    Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture());
-    assertEquals(Status.SUCCESS_OK, responseCodeCaptor.getValue());
+    assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
 
-    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());
+    String entityPayload = exchange.getOut().getBody(String.class); 
+    assertNotNull(entityPayload);
 
-    ArgumentCaptor<Response> responseObject = ArgumentCaptor.forClass(Response.class);
-    Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(responseObject.capture());
-    assertEquals(MediaType.APPLICATION_JSON, payloadMediaType.getValue());
-    
-    MockSearchResponse searchResponse = mapper.readValue(entityPayload.getValue(), MockSearchResponse.class);
+    MockSearchResponse searchResponse = mapper.readValue(entityPayload, MockSearchResponse.class);
 
     assertEquals(10, searchResponse.getTotalFound());
     assertEquals(10, searchResponse.getSuggestions().size());
@@ -390,23 +367,14 @@ public class UnifiedSearchProcessorTest {
     addSuggestions(99,"gamma",gamma);
     
     // method under test
-    unifiedSearchProcessor.search(mockExchange);
+    unifiedSearchProcessor.search(exchange);
+    
+    assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
 
-    ArgumentCaptor<Status> responseCodeCaptor = ArgumentCaptor.forClass(Status.class);
-    Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture());
-    assertEquals(Status.SUCCESS_OK, responseCodeCaptor.getValue());
+    String entityPayload = exchange.getOut().getBody(String.class); 
+    assertNotNull(entityPayload);
 
-    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());
-    
-    MockSearchResponse searchResponse = mapper.readValue(entityPayload.getValue(), MockSearchResponse.class);
+    MockSearchResponse searchResponse = mapper.readValue(entityPayload, MockSearchResponse.class);
 
     assertEquals(13, searchResponse.getTotalFound());
     assertEquals(13, searchResponse.getSuggestions().size());
@@ -457,23 +425,14 @@ public class UnifiedSearchProcessorTest {
     addSuggestions(0,"gamma",gamma);
     
     // method under test
-    unifiedSearchProcessor.search(mockExchange);
-
-    ArgumentCaptor<Status> responseCodeCaptor = ArgumentCaptor.forClass(Status.class);
-    Mockito.verify(mockRestletResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture());
-    assertEquals(Status.SUCCESS_OK, responseCodeCaptor.getValue());
+    unifiedSearchProcessor.search(exchange);
+    
+    assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
 
-    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());
+    String entityPayload = exchange.getOut().getBody(String.class); 
+    assertNotNull(entityPayload);
 
-    ArgumentCaptor<Response> responseObject = ArgumentCaptor.forClass(Response.class);
-    Mockito.verify(mockResponseMessage, Mockito.atLeast(1)).setBody(responseObject.capture());
-    assertEquals(MediaType.APPLICATION_JSON, payloadMediaType.getValue());
-    
-    MockSearchResponse searchResponse = mapper.readValue(entityPayload.getValue(), MockSearchResponse.class);
+    MockSearchResponse searchResponse = mapper.readValue(entityPayload, MockSearchResponse.class);
 
     assertEquals(5, searchResponse.getTotalFound());
     assertEquals(5, searchResponse.getSuggestions().size());