Initial commit for AAI-UI(sparky-backend)
[aai/sparky-be.git] / src / test / java / org / openecomp / sparky / dal / elasticsearch / ElasticSearchConfigTest.java
diff --git a/src/test/java/org/openecomp/sparky/dal/elasticsearch/ElasticSearchConfigTest.java b/src/test/java/org/openecomp/sparky/dal/elasticsearch/ElasticSearchConfigTest.java
new file mode 100644 (file)
index 0000000..c9d071f
--- /dev/null
@@ -0,0 +1,272 @@
+/* 
+* ============LICENSE_START=======================================================
+* SPARKY (AAI UI service)
+* ================================================================================
+* Copyright © 2017 AT&T Intellectual Property.
+* Copyright © 2017 Amdocs
+* All rights reserved.
+* ================================================================================
+* 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=========================================================
+* 
+* ECOMP and OpenECOMP are trademarks
+* and service marks of AT&T Intellectual Property.
+*/
+
+package org.openecomp.sparky.dal.elasticsearch;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.openecomp.sparky.dal.elasticsearch.config.ElasticSearchConfig;
+import org.openecomp.sparky.dal.exception.ElasticSearchOperationException;
+
+
+import ch.qos.logback.classic.Level;
+
+/**
+ * The Class ElasticSearchConfigTest.
+ */
+public class ElasticSearchConfigTest {
+
+  private static final String GOOD_MAPPINGS_FILE =
+      "{" + "\"properties\": {" + "\"entityType\": {" + "\"type\": \"string\"" + "},"
+          + "\"edgeTagQueryEntityFieldName\": {" + "\"type\": \"string\"," + "\"index\": \"no\""
+          + "}," + "\"edgeTagQueryEntityFieldValue\": {" + "\"type\": \"string\","
+          + "\"index\": \"no\"" + "}," + "\"searchTagIDs\" : {" + "\"type\" : \"string\"" + "},"
+          + "\"searchTags\": {" + "\"type\": \"string\"," + "\"analyzer\": \"nGram_analyzer\","
+          + "\"search_analyzer\": \"whitespace_analyzer\"}" + "}" + "}";
+
+  private static final String GOOD_SETTINGS_FILE = "{\"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\"]}}}}";
+
+  private static final String BAD_SETTINGS_FILE = "{\"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\"]}}";
+
+  /**
+   * Inits the.
+   *
+   * @throws Exception the exception
+   */
+  @Before
+  public void init() throws Exception {
+  }
+
+  /**
+   * Failure to initialize properties results in config defaults.
+   */
+  @Test
+  public void failureToInitializePropertiesResultsInConfigDefaults() {
+    try {
+      ElasticSearchConfig config = ElasticSearchConfig.getConfig();
+
+      /*
+       * Now verify that all the internal members have been set to default values
+       */
+
+      assertEquals(config.getIpAddress(), "localhost");
+      assertEquals(config.getHttpPort(), "" + 9200);
+      assertEquals(config.getJavaApiPort(), "" + 9300);
+      assertEquals(config.getIndexName(), "entitySearchIndex");
+      assertEquals(config.getType(), "aaiEntities");
+      assertEquals(config.getClusterName(), "elasticsearch");
+      assertEquals(config.getMappingsFileName(), null);
+      assertEquals(config.getSettingsFileName(), null);
+      assertEquals(config.getAuditIndexName(), "auditdataindex");
+
+    } catch (Exception exc) {
+      assertEquals("null", exc.getLocalizedMessage());
+    }
+  }
+
+
+  /**
+   * Validate accessors.
+   *
+   * @throws IOException Signals that an I/O exception has occurred.
+   * @throws ServletException the servlet exception
+   * @throws Exception the exception
+   */
+  @Test
+  public void validateAccessors() throws IOException, ServletException, Exception {
+
+    ElasticSearchConfig esConfig = new ElasticSearchConfig();
+
+    esConfig.setIpAddress("47.248.10.127");
+    esConfig.setHttpPort("8123");
+    esConfig.setJavaApiPort("9123");
+    esConfig.setIndexName("myIndexName");
+    esConfig.setType("myIndexTableType");
+    esConfig.setClusterName("ES_AAI_DEV");
+    esConfig.setMappingsFileName("d:\\1\\mappings.json");
+    esConfig.setSettingsFileName("d:\\1\\settings.json");
+    esConfig.setAuditIndexName("auditIndexName");
+
+    ElasticSearchConfig.setConfig(esConfig);
+
+    assertEquals(esConfig.getIpAddress(), "47.248.10.127");
+    assertEquals(esConfig.getHttpPort(), "8123");
+    assertEquals(esConfig.getJavaApiPort(), "9123");
+    assertEquals(esConfig.getIndexName(), "myIndexName");
+    assertEquals(esConfig.getType(), "myIndexTableType");
+    assertEquals(esConfig.getClusterName(), "ES_AAI_DEV");
+    assertEquals(esConfig.getMappingsFileName(), "d:\\1\\mappings.json");
+    assertEquals(esConfig.getSettingsFileName(), "d:\\1\\settings.json");
+    assertEquals(esConfig.getAuditIndexName(), "auditIndexName");
+
+    String output = esConfig.toString();
+
+    assertNotEquals(output, null);
+
+  }
+
+  /**
+   * Gets the elastic search settings expect valid config.
+   *
+   * @return the elastic search settings expect valid config
+   * @throws IOException Signals that an I/O exception has occurred.
+   * @throws ElasticSearchOperationException the elastic search operation exception
+   * Need to revisit this test case and change the way this class works
+   */
+  @Ignore
+  public void getElasticSearchSettings_expectValidConfig()
+      throws IOException, ElasticSearchOperationException {
+    System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
+
+    ElasticSearchConfig esConfig = new ElasticSearchConfig();
+
+    esConfig.setSettingsFileName("src/main/config/es_settings.json");
+
+    assertNotNull(esConfig.getElasticSearchSettings());
+  }
+
+  /**
+   * Gets the elastic search settings expect file not found exception.
+   *
+   * @return the elastic search settings expect file not found exception
+   * @throws IOException Signals that an I/O exception has occurred.
+   * @throws ElasticSearchOperationException the elastic search operation exception
+   * 
+   * Need to revisit this test case and change the way this class works
+   */
+  @Ignore
+  public void getElasticSearchSettings_expectFileNotFoundException()
+      throws IOException, ElasticSearchOperationException {
+    System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
+
+    ElasticSearchConfig esConfig = new ElasticSearchConfig();
+
+    esConfig.setSettingsFileName("src/main/config/es_setting.json");
+
+    esConfig.getElasticSearchSettings();
+
+  }
+
+  /**
+   * Gets the elastic search mappings expect valid config.
+   *
+   * @return the elastic search mappings expect valid config
+   * @throws IOException Signals that an I/O exception has occurred.
+   * @throws ElasticSearchOperationException the elastic search operation exception
+   * 
+   * Need to revisit this test case and change the way this class works
+   */
+  @Ignore
+  public void getElasticSearchMappings_expectValidConfig()
+      throws IOException, ElasticSearchOperationException {
+    System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
+
+    ElasticSearchConfig esConfig = new ElasticSearchConfig();
+
+    esConfig.setMappingsFileName("src/main/config/es_mappings.json");
+
+    assertNotNull(esConfig.getElasticSearchMappings());
+  }
+
+  /**
+   * Gets the elastic search mappings expect file not found exception.
+   *
+   * @return the elastic search mappings expect file not found exception
+   * @throws IOException Signals that an I/O exception has occurred.
+   * @throws ElasticSearchOperationException the elastic search operation exception
+   */
+  @Test(expected = ElasticSearchOperationException.class)
+  public void getElasticSearchMappings_expectFileNotFoundException()
+      throws IOException, ElasticSearchOperationException {
+    System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
+
+    ElasticSearchConfig esConfig = new ElasticSearchConfig();
+
+    esConfig.setSettingsFileName("src/main/config/es_setting.json");
+
+    esConfig.getElasticSearchMappings();
+
+  }
+
+  /**
+   * Builds the elastic search table config expect valid result.
+   *
+   * @throws ElasticSearchOperationException the elastic search operation exception
+   * @throws IOException Signals that an I/O exception has occurred.
+   */
+  @Test
+  public void buildElasticSearchTableConfig_expectValidResult()
+      throws ElasticSearchOperationException, IOException {
+    ElasticSearchConfig spyEsConfig = Mockito.spy(new ElasticSearchConfig());
+    Mockito.doReturn(GOOD_MAPPINGS_FILE).when(spyEsConfig).getElasticSearchMappings();
+    Mockito.doReturn(GOOD_SETTINGS_FILE).when(spyEsConfig).getElasticSearchSettings();
+    Mockito.doReturn("myIndexTableType").when(spyEsConfig).getType();
+
+    assertNotNull(spyEsConfig.buildElasticSearchTableConfig());
+  }
+
+  /**
+   * Builds the elastic search table config expect exception.
+   *
+   * @throws ElasticSearchOperationException the elastic search operation exception
+   * @throws IOException Signals that an I/O exception has occurred.
+   */
+  @Test(expected = ElasticSearchOperationException.class)
+  public void buildElasticSearchTableConfig_expectException()
+      throws ElasticSearchOperationException, IOException {
+    ElasticSearchConfig spyEsConfig = Mockito.spy(new ElasticSearchConfig());
+    Mockito.doReturn(GOOD_MAPPINGS_FILE).when(spyEsConfig).getElasticSearchMappings();
+    Mockito.doReturn(BAD_SETTINGS_FILE).when(spyEsConfig).getElasticSearchSettings();
+    Mockito.doReturn("myIndexTableType").when(spyEsConfig).getType();
+
+    spyEsConfig.buildElasticSearchTableConfig();
+  }
+
+}