Removing AJSC and moving to SpringBoot
[aai/search-data-service.git] / src / test / java / org / onap / aai / sa / rest / IndexApiTest.java
index f63ddbd..8f3bfac 100644 (file)
 package org.onap.aai.sa.rest;
 
 
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
+// import org.glassfish.jersey.server.ResourceConfig;
+// import org.glassfish.jersey.test.JerseyTest;
 import org.junit.Test;
-import org.onap.aai.sa.rest.IndexApi;
+import org.junit.runner.RunWith;
 import org.onap.aai.sa.searchdbabstraction.elasticsearch.exception.DocumentStoreOperationException;
 import org.onap.aai.sa.searchdbabstraction.entity.OperationResult;
-
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Response;
-import java.io.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
+
+//import javax.ws.rs.core.Application;
+//import javax.ws.rs.core.Response;
 
 
 /**
  * This suite of tests is intended to exercise the set of REST endpoints
  * associated with manipulating Indexes in the document store.
  */
-public class IndexApiTest extends JerseyTest {
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@AutoConfigureMockMvc
+public class IndexApiTest {
 
   private final String TOP_URI = "/test/indexes/";
   private final String SIMPLE_DOC_SCHEMA_JSON = "src/test/resources/json/simpleDocument.json";
   private final String DYNAMIC_INDEX_PAYLOAD = "src/test/resources/json/dynamicIndex.json";
 
-  @Override
-  protected Application configure() {
+  @Autowired
+  private MockMvc mockMvc;
+
+//
+//  @Override
+//  protected Application configure() {
+//
+//    // Make sure that our test endpoint is on the resource path
+//    // for Jersey Test.
+//    return new ResourceConfig(SearchServiceApiHarness.class);
+//  }
+//
+//
 
-    // Make sure that our test endpoint is on the resource path
-    // for Jersey Test.
-    return new ResourceConfig(SearchServiceApiHarness.class);
+  /**
+   * Tests the dynamic shcema creation flow that send the request
+   * JSON to the data store without any JSON validation against a schema
+   *
+   * @throws IOException
+   */
+  @Test
+  public void createDynamicIndexTest() throws Exception {
+    String indexName = "super-ultra-dynamic-mega-index";
+    String dynamicUri = TOP_URI + "dynamic/";
+    File indexFile = new File(DYNAMIC_INDEX_PAYLOAD);
+    String indexPayload = TestUtils.readFileToString(indexFile);
+
+//    String result = target(dynamicUri + indexName).request().put(Entity.json(indexPayload), String.class);
+    MvcResult result = this.mockMvc.perform ( put (dynamicUri + indexName)
+            .contentType ( MediaType.APPLICATION_JSON ).content ( indexPayload )).andReturn ();
+
+    assertEquals(indexPayload, result.getResponse ().getContentAsString ());
   }
 
 
   /**
    * This test validates that the {@link IndexApi} is able to convert {@link OperationResult}
-   * obects to standard REST {@link Response} objects.
+   * obects to standard REST {@link ResponseEntity} objects.
    *
    * @throws FileNotFoundException
    * @throws IOException
@@ -80,18 +121,18 @@ public class IndexApiTest extends JerseyTest {
       @Override
       public void init() { /* do nothing */ }
     };
-
+//
     //Construct an OperationResult instance with a success code and string.
     OperationResult successResult = new OperationResult();
     successResult.setResultCode(SUCCESS_RESULT_CODE);
     successResult.setResult(SUCCESS_RESULT_STRING);
 
     // Convert our success OperationResult to a standard REST Response...
-    Response successResponse = indexApi.responseFromOperationResult(successResult);
+    ResponseEntity successResponse = indexApi.responseFromOperationResult(successResult);
 
     // ...and validate that the Response is correctly populated.
-    assertEquals("Unexpected result code", SUCCESS_RESULT_CODE, successResponse.getStatus());
-    assertTrue("Incorrect result string", ((String) successResponse.getEntity()).equals(SUCCESS_RESULT_STRING));
+    assertEquals("Unexpected result code", SUCCESS_RESULT_CODE, successResponse.getStatusCodeValue ());
+    assertTrue("Incorrect result string", ((String) successResponse.getBody ()).equals(SUCCESS_RESULT_STRING));
 
     // Construct an OperationResult instance with an error code and failure
     // cause.
@@ -100,22 +141,22 @@ public class IndexApiTest extends JerseyTest {
     failureResult.setFailureCause(FAILURE_CAUSE_STRING);
 
     // Convert our failure OperationResult to a standard REST Response...
-    Response failureResponse = indexApi.responseFromOperationResult(failureResult);
+    ResponseEntity failureResponse = indexApi.responseFromOperationResult(failureResult);
 
     // ...and validate that the Response is correctly populated.
-    assertEquals("Unexpected result code", FAILURE_RESULT_CODE, failureResponse.getStatus());
-    assertTrue("Incorrect result string", ((String) failureResponse.getEntity()).equals(FAILURE_CAUSE_STRING));
+    assertEquals("Unexpected result code", FAILURE_RESULT_CODE, failureResponse.getStatusCodeValue ());
+    assertTrue("Incorrect result string", ((String) failureResponse.getBody ()).equals(FAILURE_CAUSE_STRING));
   }
-
-
-  /**
-   * This test validates the behaviour of the 'Create Index' POST request
-   * endpoint.
-   *
-   * @throws IOException
-   */
+//
+//
+//  /**
+//   * This test validates the behaviour of the 'Create Index' POST request
+//   * endpoint.
+//   *
+//   * @throws IOException
+//   */
   @Test
-  public void createIndexTest() throws IOException {
+  public void createIndexTest() throws Exception {
 
     String INDEX_NAME = "test-index";
     String EXPECTED_SETTINGS =
@@ -151,13 +192,15 @@ public class IndexApiTest extends JerseyTest {
 
     // Send a request to our 'create index' endpoint, using the schema
     // which we just read.
-    String result = target(TOP_URI + INDEX_NAME).request().put(Entity.json(documentJson), String.class);
+    // String result = target(TOP_URI + INDEX_NAME).request().put(Entity.json(documentJson), String.class);
+    MvcResult result = this.mockMvc.perform ( put ( TOP_URI + INDEX_NAME ).contentType ( MediaType.APPLICATION_JSON )
+            .content ( documentJson) ).andReturn ();
 
 
     // Our stub document store DAO returns the parameters that it was
     // passed as the result string, so now we can validate that our
     // endpoint invoked it with the correct parameters.
-    String[] tokenizedResult = result.split("@");
+    String[] tokenizedResult = result.getResponse ().getContentAsString ().split("@");
     assertTrue("Unexpected Index Name '" + tokenizedResult[0] + "' passed to doc store DAO",
         tokenizedResult[0].equals(INDEX_NAME));
     assertTrue("Unexpected settings string '" + tokenizedResult[1] + "' passed to doc store DAO",
@@ -165,78 +208,74 @@ public class IndexApiTest extends JerseyTest {
     assertTrue("Unexpected mappings string '" + tokenizedResult[2] + "' passed to doc store DAO",
         tokenizedResult[2].equals(EXPECTED_MAPPINGS));
   }
-
-  /**
-   * Tests the dynamic shcema creation flow that send the request
-   * JSON to the data store without any JSON validation against a schema
-   * 
-   * @throws IOException
-   */
-  @Test
-  public void createDynamicIndexTest() throws IOException {
-    String indexName = "super-ultra-dynamic-mega-index";
-    String dynamicUri = TOP_URI + "dynamic/";
-    File indexFile = new File(DYNAMIC_INDEX_PAYLOAD);
-    String indexPayload = TestUtils.readFileToString(indexFile);
-    
-    String result = target(dynamicUri + indexName).request().put(Entity.json(indexPayload), String.class);
-
-    assertEquals(indexPayload, result);
-  }
-
+//
+//
   /**
    * This test validates that a 'create index' request with an improperly
    * formatted document schema as the payload will result in an
    * appropriate error being returned from the endpoint.
    */
   @Test
-  public void createIndexWithMangledSchemaTest() {
+  public void createIndexWithMangledSchemaTest() throws Exception {
 
     String INDEX_NAME = "test-index";
     int BAD_REQUEST_CODE = 400;
 
     String invalidSchemaString = "this is definitely not json!";
 
-    Response result = target(TOP_URI + INDEX_NAME).request().put(Entity.json(invalidSchemaString), Response.class);
+    // ResponseEntity result = target(TOP_URI + INDEX_NAME).request().put(Entity.json(invalidSchemaString), ResponseEntity.class);
+    MvcResult result = this.mockMvc.perform ( put ( TOP_URI + INDEX_NAME ).contentType ( MediaType.APPLICATION_JSON )
+            .content ( invalidSchemaString) ).andReturn ();
 
     assertEquals("Invalid document schema should result in a 400 error",
-        BAD_REQUEST_CODE, result.getStatus());
+        BAD_REQUEST_CODE, result.getResponse ().getStatus ());
   }
-
-
+//
+//
   /**
    * This test validates the behaviour of the 'Delete Index' end point.
    */
   @Test
-  public void deleteIndexTest() {
+  public void deleteIndexTest() throws Exception {
 
     String INDEX_NAME = "test-index";
 
     // Send a request to the 'delete index' endpoint.
-    String result = target(TOP_URI + INDEX_NAME).request().delete(String.class);
+    // String result = target(TOP_URI + INDEX_NAME).request().delete(String.class);
+
+    MvcResult result = this.mockMvc.perform ( delete ( TOP_URI + INDEX_NAME )
+            .contentType ( MediaType.APPLICATION_JSON )
+            .header ( "If-Match", "1" )
+            .content ( "Some Json" ) ).andReturn ( );
 
     // Validate that the expected parameters were passed to the document
     // store DAO.
-    assertTrue("Unexpected index name '" + result + "' passed to doc store DAO",
-        result.equals(INDEX_NAME));
+    assertTrue("Unexpected index name '" + result.getResponse ().getContentAsString () + "' passed to doc store DAO",
+        result.getResponse ().getContentAsString ().equals(INDEX_NAME));
   }
-
-
-  /**
-   * This test validates that attempting to delete an index which does not
-   * exist results in a 404 error.
-   */
+//
+//
+//  /**
+//   * This test validates that attempting to delete an index which does not
+//   * exist results in a 404 error.
+//   */
   @Test
-  public void deleteIndexDoesNotExistTest() {
+  public void deleteIndexDoesNotExistTest() throws Exception {
 
     int NOT_FOUND_CODE = 404;
 
     // Send a request to the 'delete index' endpoint, specifying a
     // non-existent index.
-    Response result = target(TOP_URI + StubEsController.DOES_NOT_EXIST_INDEX).request().delete(Response.class);
+    // ResponseEntity result = target(TOP_URI + StubEsController.DOES_NOT_EXIST_INDEX).request().delete(ResponseEntity.class);
+
+    MvcResult result = this.mockMvc.perform ( delete ( TOP_URI + StubEsController.DOES_NOT_EXIST_INDEX )
+            .contentType ( MediaType.APPLICATION_JSON )
+            .header ( "If-Match", "1" )
+            .content ( "Some Json" ) ).andReturn ( );
+
 
     // Validate that a 404 error code is returned from the end point.
     assertEquals("Deleting an index which does not exist should result in a 404 error",
-        NOT_FOUND_CODE, result.getStatus());
+        NOT_FOUND_CODE, result.getResponse ().getStatus ());
   }
 }