aboutsummaryrefslogtreecommitdiffstats
path: root/search-data-service/src/test/java/org/onap/aai/sa/rest/StubEsController.java
diff options
context:
space:
mode:
Diffstat (limited to 'search-data-service/src/test/java/org/onap/aai/sa/rest/StubEsController.java')
-rw-r--r--search-data-service/src/test/java/org/onap/aai/sa/rest/StubEsController.java266
1 files changed, 266 insertions, 0 deletions
diff --git a/search-data-service/src/test/java/org/onap/aai/sa/rest/StubEsController.java b/search-data-service/src/test/java/org/onap/aai/sa/rest/StubEsController.java
new file mode 100644
index 0000000..cb4edbc
--- /dev/null
+++ b/search-data-service/src/test/java/org/onap/aai/sa/rest/StubEsController.java
@@ -0,0 +1,266 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.aai.sa.rest;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import org.json.simple.JSONObject;
+import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.DocumentStoreDataEntity;
+import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.DocumentStoreInterface;
+import org.onap.aai.sa.searchdbabstraction.elasticsearch.exception.DocumentStoreOperationException;
+import org.onap.aai.sa.searchdbabstraction.entity.Document;
+import org.onap.aai.sa.searchdbabstraction.entity.DocumentOperationResult;
+import org.onap.aai.sa.searchdbabstraction.entity.OperationResult;
+import org.onap.aai.sa.searchdbabstraction.entity.SearchHit;
+import org.onap.aai.sa.searchdbabstraction.entity.SearchHits;
+import org.onap.aai.sa.searchdbabstraction.entity.SearchOperationResult;
+import org.onap.aai.sa.searchdbabstraction.util.DocumentSchemaUtil;
+
+/**
+ * This class implements a stubbed version of the document store DAO so that we can run unit tests without trying to
+ * connect to a real document store.
+ */
+public class StubEsController implements DocumentStoreInterface {
+
+ public static final String DOES_NOT_EXIST_INDEX = "index-does-not-exist";
+
+ private AnalysisConfiguration analysisConfig = null;
+
+ /**
+ *
+ */
+ // private IndexAPIHarness indexAPIHarness;
+
+ StubEsController() {
+ analysisConfig = new AnalysisConfiguration();
+ analysisConfig.init("src/test/resources/json/filter-config.json",
+ "src/test/resources/json/analysis-config.json");
+ }
+
+
+ @Override
+ public OperationResult createIndex(String index, DocumentSchema documentSchema) {
+
+ // Just return an OK result, with the parameters that we were passed
+ // bundled in the response string. This allows unit tests to validate
+ // that those parameters match what they expected to be passed.
+ OperationResult opResult = new OperationResult();
+ opResult.setResultCode(200);
+
+ try {
+ opResult.setResult(index + "@" + analysisConfig.getEsIndexSettings() + "@"
+ + DocumentSchemaUtil.generateDocumentMappings(documentSchema));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public OperationResult createDynamicIndex(String index, String dynamicSchema) {
+ OperationResult opResult = new OperationResult();
+ opResult.setResultCode(200);
+ // Directly return the json as this flow should not edit the json in any way
+ opResult.setResult(dynamicSchema);
+ return opResult;
+ }
+
+
+ @Override
+ public OperationResult deleteIndex(String indexName) throws DocumentStoreOperationException {
+
+ OperationResult opResult = new OperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ opResult.setResultCode(200);
+ opResult.setResult(indexName);
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public DocumentOperationResult createDocument(String indexName, DocumentStoreDataEntity document,
+ boolean allowImplicitIndexCreation) throws DocumentStoreOperationException {
+
+ DocumentOperationResult opResult = buildSampleDocumentOperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ opResult.setResultCode(200);
+ opResult.setResultVersion("1");
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public DocumentOperationResult updateDocument(String indexName, DocumentStoreDataEntity document,
+ boolean allowImplicitIndexCreation) throws DocumentStoreOperationException {
+
+ DocumentOperationResult opResult = buildSampleDocumentOperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ opResult.setResultCode(200);
+ String version = "1";
+ if (document.getVersion() != null) {
+ version = String.valueOf(Integer.parseInt(document.getVersion()) + 1);
+ }
+ opResult.setResultVersion(version);
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public DocumentOperationResult deleteDocument(String indexName, DocumentStoreDataEntity document)
+ throws DocumentStoreOperationException {
+ DocumentOperationResult opResult = buildSampleDocumentOperationResult();
+
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ if (opResult.getDocument() != null) {
+ opResult.getDocument().setEtag(null);
+ opResult.getDocument().setUrl(null);
+ opResult.setResultVersion("1");
+ }
+ opResult.setResultCode(200);
+ opResult.setResult(indexName + "@" + document.getId());
+ opResult.setResultVersion("1");
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public DocumentOperationResult getDocument(String indexName, DocumentStoreDataEntity document)
+ throws DocumentStoreOperationException {
+ DocumentOperationResult opResult = buildSampleDocumentOperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ // Adding it to make the tests pass.
+ opResult.setResultVersion("1");
+ } else {
+ opResult.setResultCode(200);
+ // Adding it to make the tests pass.
+ opResult.setResultVersion("1");
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public SearchOperationResult search(String indexName, String queryText) throws DocumentStoreOperationException {
+
+ SearchOperationResult opResult = buildSampleSearchOperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ opResult.setResultCode(200);
+ opResult.setResult(indexName + "@" + queryText);
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public SearchOperationResult searchWithPayload(String indexName, String query)
+ throws DocumentStoreOperationException {
+ SearchOperationResult opResult = buildSampleSearchOperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ opResult.setResultCode(200);
+ opResult.setResult(indexName + "@" + query);
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public SearchOperationResult suggestionQueryWithPayload(String indexName, String query)
+ throws DocumentStoreOperationException {
+ SearchOperationResult opResult = new SearchOperationResult();
+
+ if (indexName.equals(DOES_NOT_EXIST_INDEX)) {
+ opResult.setResultCode(404);
+ } else {
+ opResult.setResultCode(200);
+ opResult.setResult(indexName + "@" + query);
+ }
+
+ return opResult;
+ }
+
+ @Override
+ public OperationResult performBulkOperations(BulkRequest[] requests) throws DocumentStoreOperationException {
+
+ OperationResult opResult = new OperationResult();
+ opResult.setResultCode(200);
+
+ return opResult;
+ }
+
+ private DocumentOperationResult buildSampleDocumentOperationResult() {
+ DocumentOperationResult result = new DocumentOperationResult();
+ Document doc = new Document();
+ doc.setEtag("etag1");
+
+ doc.setContent(new JSONObject());
+ result.setDocument(doc);
+ return result;
+ }
+
+ private SearchOperationResult buildSampleSearchOperationResult() {
+ SearchOperationResult result = new SearchOperationResult();
+
+ SearchHits searchHits = new SearchHits();
+ SearchHit[] searchHitArray = new SearchHit[1];
+ SearchHit searchHit = new SearchHit();
+ Document doc = new Document();
+ doc.setEtag("etag1");
+ Map<String, Object> content = new HashMap<>();
+ content.put("key1", "value1");
+ doc.setContent(new JSONObject());
+ searchHit.setDocument(doc);
+ searchHitArray[0] = searchHit;
+
+ searchHits.setHits(searchHitArray);
+ searchHits.setTotalHits("1");
+ result.setSearchResult(searchHits);
+
+ return result;
+
+ }
+
+}