X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Forg%2Fonap%2Faai%2Fsa%2Frest%2FIndexApiTest.java;h=8f3bfacbf8436eedf2f2935fbb3d7dc147414e1f;hb=ce701746049abfd94a87b46e43f296faf32d6213;hp=f63ddbda4236dfed6476c94bd37b39da1ca2f6ae;hpb=06d31abe3065205c87447687ad87c05e602c97d7;p=aai%2Fsearch-data-service.git diff --git a/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java b/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java index f63ddbd..8f3bfac 100644 --- a/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java +++ b/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java @@ -21,44 +21,85 @@ 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 ()); } }