aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/onap/aai/sa/rest/IndexApiTest.java')
-rw-r--r--src/test/java/org/onap/aai/sa/rest/IndexApiTest.java449
1 files changed, 221 insertions, 228 deletions
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 0f5932b..cd33edd 100644
--- a/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java
+++ b/src/test/java/org/onap/aai/sa/rest/IndexApiTest.java
@@ -50,238 +50,231 @@ import org.springframework.test.web.servlet.MvcResult;
/**
- * This suite of tests is intended to exercise the set of REST endpoints
- * associated with manipulating Indexes in the document store.
+ * This suite of tests is intended to exercise the set of REST endpoints associated with manipulating Indexes in the
+ * document store.
*/
@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";
-
- @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);
-// }
-//
-//
-
- @Before
- public void setup() throws Exception {
- System.setProperty("CONFIG_HOME", System.getProperty("user.dir")+ File.separator + "src/test/resources/json");
- }
-
- /**
- * 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 ResponseEntity} objects.
- *
- * @throws FileNotFoundException
- * @throws IOException
- * @throws DocumentStoreOperationException
- */
- @Test
- public void responseFromOperationResultTest() throws FileNotFoundException, IOException, DocumentStoreOperationException {
-
- int SUCCESS_RESULT_CODE = 200;
- String SUCCESS_RESULT_STRING = "Everything is ay-okay!";
- int FAILURE_RESULT_CODE = 500;
- String FAILURE_CAUSE_STRING = "Something went wrong!";
-
-
- // Create an instance of the index API endpoint that we will test against.
- // We will override the init() method because we don't want it to try to
- // connect to a real document store.
- IndexApi indexApi = new IndexApi(new SearchServiceApiHarness()) {
- @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...
- ResponseEntity successResponse = indexApi.responseFromOperationResult(successResult);
-
- // ...and validate that the Response is correctly populated.
- 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.
- OperationResult failureResult = new OperationResult();
- failureResult.setResultCode(FAILURE_RESULT_CODE);
- failureResult.setFailureCause(FAILURE_CAUSE_STRING);
-
- // Convert our failure OperationResult to a standard REST Response...
- ResponseEntity failureResponse = indexApi.responseFromOperationResult(failureResult);
-
- // ...and validate that the Response is correctly populated.
- 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
-// */
- @Test
- public void createIndexTest() throws Exception {
-
- String INDEX_NAME = "test-index";
- String EXPECTED_SETTINGS =
- "{\"analysis\": "
- + "{\"filter\": "
- + "{\"nGram_filter\": { "
- + "\"type\": \"nGram\", "
- + "\"min_gram\": 1, "
- + "\"max_gram\": 50, "
- + "\"token_chars\": [ \"letter\", \"digit\", \"punctuation\", \"symbol\" ]}},"
- + "\"analyzer\": {"
- + "\"nGram_analyzer\": "
- + "{\"type\": \"custom\","
- + "\"tokenizer\": \"whitespace\","
- + "\"filter\": [\"lowercase\",\"asciifolding\",\"nGram_filter\"]},"
- + "\"whitespace_analyzer\": "
- + "{\"type\": \"custom\","
- + "\"tokenizer\": \"whitespace\","
- + "\"filter\": [\"lowercase\",\"asciifolding\"]}}}}";
- String EXPECTED_MAPPINGS =
- "{\"dynamic_templates\":[{\"strings\":{\"match_mapping_type\":\"string\",\"match\":\"*\",\"mapping\":{\"type\":\"text\",\"fielddata\":true}}}]"
- + ",\"properties\": {"
- + "\"serverName\": {"
- + "\"type\": \"string\", "
- + "\"index\": \"analyzed\", "
- + "\"search_analyzer\": \"whitespace\"}, "
- + "\"serverComplex\": {"
- + "\"type\": \"string\", "
- + "\"search_analyzer\": \"whitespace\"}}}";
-
- // Read a valid document schema from a json file.
- File schemaFile = new File(SIMPLE_DOC_SCHEMA_JSON);
- String documentJson = TestUtils.readFileToString(schemaFile);
-
- // 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);
- 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.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",
- tokenizedResult[1].equals(EXPECTED_SETTINGS));
- assertTrue("Unexpected mappings string '" + tokenizedResult[2] + "' passed to doc store DAO",
- tokenizedResult[2].equals(EXPECTED_MAPPINGS));
- }
-//
-//
- /**
- * 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() throws Exception {
-
- String INDEX_NAME = "test-index";
- int BAD_REQUEST_CODE = 400;
-
- String invalidSchemaString = "this is definitely not json!";
-
- // 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.getResponse ().getStatus ());
- }
-//
-//
- /**
- * This test validates the behaviour of the 'Delete Index' end point.
- */
- @Test
- 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);
-
- 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.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.
-// */
- @Test
- public void deleteIndexDoesNotExistTest() throws Exception {
-
- int NOT_FOUND_CODE = 404;
-
- // Send a request to the 'delete index' endpoint, specifying a
- // non-existent index.
- // 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.getResponse ().getStatus ());
- }
+ 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";
+
+ @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);
+ // }
+ //
+ //
+
+ @Before
+ public void setup() throws Exception {
+ System.setProperty("CONFIG_HOME", System.getProperty("user.dir") + File.separator + "src/test/resources/json");
+ }
+
+ /**
+ * 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 ResponseEntity} objects.
+ *
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws DocumentStoreOperationException
+ */
+ @Test
+ public void responseFromOperationResultTest()
+ throws FileNotFoundException, IOException, DocumentStoreOperationException {
+
+ int SUCCESS_RESULT_CODE = 200;
+ String SUCCESS_RESULT_STRING = "Everything is ay-okay!";
+ int FAILURE_RESULT_CODE = 500;
+ String FAILURE_CAUSE_STRING = "Something went wrong!";
+
+
+ // Create an instance of the index API endpoint that we will test against.
+ // We will override the init() method because we don't want it to try to
+ // connect to a real document store.
+ IndexApi indexApi = new IndexApi(new SearchServiceApiHarness()) {
+ @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...
+ ResponseEntity successResponse = indexApi.responseFromOperationResult(successResult);
+
+ // ...and validate that the Response is correctly populated.
+ 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.
+ OperationResult failureResult = new OperationResult();
+ failureResult.setResultCode(FAILURE_RESULT_CODE);
+ failureResult.setFailureCause(FAILURE_CAUSE_STRING);
+
+ // Convert our failure OperationResult to a standard REST Response...
+ ResponseEntity failureResponse = indexApi.responseFromOperationResult(failureResult);
+
+ // ...and validate that the Response is correctly populated.
+ 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
+ // */
+ @Test
+ public void createIndexTest() throws Exception {
+
+ String INDEX_NAME = "test-index";
+ String EXPECTED_SETTINGS = "{\"analysis\": " + "{\"filter\": " + "{\"nGram_filter\": { "
+ + "\"type\": \"nGram\", " + "\"min_gram\": 1, " + "\"max_gram\": 50, "
+ + "\"token_chars\": [ \"letter\", \"digit\", \"punctuation\", \"symbol\" ]}}," + "\"analyzer\": {"
+ + "\"nGram_analyzer\": " + "{\"type\": \"custom\"," + "\"tokenizer\": \"whitespace\","
+ + "\"filter\": [\"lowercase\",\"asciifolding\",\"nGram_filter\"]}," + "\"whitespace_analyzer\": "
+ + "{\"type\": \"custom\"," + "\"tokenizer\": \"whitespace\","
+ + "\"filter\": [\"lowercase\",\"asciifolding\"]}}}}";
+ String EXPECTED_MAPPINGS =
+ "{\"dynamic_templates\":[{\"strings\":{\"match_mapping_type\":\"string\",\"match\":\"*\",\"mapping\":{\"type\":\"text\",\"fielddata\":true}}}]"
+ + ",\"properties\": {" + "\"serverName\": {" + "\"type\": \"string\", "
+ + "\"index\": \"analyzed\", " + "\"search_analyzer\": \"whitespace\"}, "
+ + "\"serverComplex\": {" + "\"type\": \"string\", " + "\"search_analyzer\": \"whitespace\"}}}";
+
+ // Read a valid document schema from a json file.
+ File schemaFile = new File(SIMPLE_DOC_SCHEMA_JSON);
+ String documentJson = TestUtils.readFileToString(schemaFile);
+
+ // 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);
+ 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.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",
+ tokenizedResult[1].equals(EXPECTED_SETTINGS));
+ assertTrue("Unexpected mappings string '" + tokenizedResult[2] + "' passed to doc store DAO",
+ tokenizedResult[2].equals(EXPECTED_MAPPINGS));
+ }
+
+ //
+ //
+ /**
+ * 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() throws Exception {
+
+ String INDEX_NAME = "test-index";
+ int BAD_REQUEST_CODE = 400;
+
+ String invalidSchemaString = "this is definitely not json!";
+
+ // 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.getResponse().getStatus());
+ }
+
+ //
+ //
+ /**
+ * This test validates the behaviour of the 'Delete Index' end point.
+ */
+ @Test
+ 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);
+
+ 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.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.
+ // */
+ @Test
+ public void deleteIndexDoesNotExistTest() throws Exception {
+
+ int NOT_FOUND_CODE = 404;
+
+ // Send a request to the 'delete index' endpoint, specifying a
+ // non-existent index.
+ // 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.getResponse().getStatus());
+ }
}