Add unit test cases to increase sonar coverage
[aai/sparky-be.git] / src / test / java / org / onap / aai / sparky / dal / elasticsearch / ElasticSearchConfigTest.java
1 /**\r
2  * ============LICENSE_START=======================================================\r
3  * org.onap.aai\r
4  * ================================================================================\r
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * Copyright © 2017 Amdocs\r
7  * ================================================================================\r
8  * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * you may not use this file except in compliance with the License.\r
10  * You may obtain a copy of the License at\r
11  *\r
12  *       http://www.apache.org/licenses/LICENSE-2.0\r
13  *\r
14  * Unless required by applicable law or agreed to in writing, software\r
15  * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * See the License for the specific language governing permissions and\r
18  * limitations under the License.\r
19  * ============LICENSE_END=========================================================\r
20  *\r
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
22  */\r
23 \r
24 package org.onap.aai.sparky.dal.elasticsearch;\r
25 \r
26 import static org.junit.Assert.assertEquals;\r
27 import static org.junit.Assert.assertNotEquals;\r
28 import static org.junit.Assert.assertNotNull;\r
29 \r
30 import java.io.File;\r
31 import java.io.IOException;\r
32 \r
33 import javax.servlet.ServletException;\r
34 \r
35 import org.junit.Assert;\r
36 import org.junit.Before;\r
37 import org.junit.Ignore;\r
38 import org.junit.Test;\r
39 import org.mockito.Mockito;\r
40 import org.onap.aai.sparky.dal.elasticsearch.config.ElasticSearchConfig;\r
41 import org.onap.aai.sparky.dal.exception.ElasticSearchOperationException;\r
42 \r
43 import ch.qos.logback.classic.Level;\r
44 \r
45 /**\r
46  * The Class ElasticSearchConfigTest.\r
47  */\r
48 public class ElasticSearchConfigTest {\r
49 \r
50   private static final String GOOD_MAPPINGS_FILE =\r
51           "{" + "\"properties\": {" + "\"entityType\": {" + "\"type\": \"string\"" + "},"\r
52                   + "\"edgeTagQueryEntityFieldName\": {" + "\"type\": \"string\"," + "\"index\": \"no\""\r
53                   + "}," + "\"edgeTagQueryEntityFieldValue\": {" + "\"type\": \"string\","\r
54                   + "\"index\": \"no\"" + "}," + "\"searchTagIDs\" : {" + "\"type\" : \"string\"" + "},"\r
55                   + "\"searchTags\": {" + "\"type\": \"string\"," + "\"analyzer\": \"nGram_analyzer\","\r
56                   + "\"search_analyzer\": \"whitespace_analyzer\"}" + "}" + "}";\r
57 \r
58   private static final String GOOD_SETTINGS_FILE = "{\"analysis\": {" + "\"filter\": {"\r
59           + "\"nGram_filter\": {" + "\"type\": \"nGram\"," + "\"min_gram\": 1," + "\"max_gram\": 50,"\r
60           + "\"token_chars\": [" + "\"letter\"," + "\"digit\"," + "\"punctuation\"," + "\"symbol\""\r
61           + "]}}," + "\"analyzer\": {" + "\"nGram_analyzer\": {" + "\"type\": \"custom\","\r
62           + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\"," + "\"asciifolding\","\r
63           + "\"nGram_filter\"]}," + "\"whitespace_analyzer\": {" + "\"type\": \"custom\","\r
64           + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\","\r
65           + "\"asciifolding\"]}}}}";\r
66 \r
67   private static final String BAD_SETTINGS_FILE = "{\"analysis\": {" + "\"filter\": {"\r
68           + "\"nGram_filter\": {" + "\"type\": \"nGram\"," + "\"min_gram\": 1," + "\"max_gram\": 50,"\r
69           + "\"token_chars\": [" + "\"letter\"," + "\"digit\"," + "\"punctuation\"," + "\"symbol\""\r
70           + "]}}," + "\"analyzer\": {" + "\"nGram_analyzer\": {" + "\"type\": \"custom\","\r
71           + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\"," + "\"asciifolding\","\r
72           + "\"nGram_filter\"]}," + "\"whitespace_analyzer\": {" + "\"type\": \"custom\","\r
73           + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\","\r
74           + "\"asciifolding\"]}}";\r
75 \r
76   ElasticSearchConfig elasticSearchConfig;\r
77 \r
78   /**\r
79    * Inits the.\r
80    *\r
81    * @throws Exception the exception\r
82    */\r
83   @Before\r
84   public void init() throws Exception {\r
85     elasticSearchConfig = Mockito.spy(new ElasticSearchConfig());\r
86   }\r
87 \r
88   /**\r
89    * Validate accessors.\r
90    *\r
91    * @throws IOException Signals that an I/O exception has occurred.\r
92    * @throws ServletException the servlet exception\r
93    * @throws Exception the exception\r
94    */\r
95   @Test\r
96   public void validateAccessors() throws IOException, ServletException, Exception {\r
97 \r
98     ElasticSearchConfig esConfig = new ElasticSearchConfig();\r
99 \r
100     esConfig.setIpAddress("47.248.10.127");\r
101     esConfig.setHttpPort("8123");\r
102     esConfig.setJavaApiPort("9123");\r
103     esConfig.setIndexName("myIndexName");\r
104     esConfig.setType("myIndexTableType");\r
105     esConfig.setClusterName("ES_AAI_DEV");\r
106     esConfig.setMappingsFileName("d:\\1\\mappings.json");\r
107     esConfig.setSettingsFileName("d:\\1\\settings.json");\r
108     esConfig.setAuditIndexName("auditIndexName");\r
109 \r
110     ElasticSearchConfig.setConfig(esConfig);\r
111 \r
112     assertEquals(esConfig.getIpAddress(), "47.248.10.127");\r
113     assertEquals(esConfig.getHttpPort(), "8123");\r
114     assertEquals(esConfig.getJavaApiPort(), "9123");\r
115     assertEquals(esConfig.getIndexName(), "myIndexName");\r
116     assertEquals(esConfig.getType(), "myIndexTableType");\r
117     assertEquals(esConfig.getClusterName(), "ES_AAI_DEV");\r
118     assertEquals(esConfig.getMappingsFileName(), "d:\\1\\mappings.json");\r
119     assertEquals(esConfig.getSettingsFileName(), "d:\\1\\settings.json");\r
120     assertEquals(esConfig.getAuditIndexName(), "auditIndexName");\r
121 \r
122     String output = esConfig.toString();\r
123 \r
124     assertNotEquals(output, null);\r
125 \r
126   }\r
127 \r
128   /**\r
129    * Gets the elastic search settings expect valid config.\r
130    *\r
131    * @return the elastic search settings expect valid config\r
132    * @throws IOException Signals that an I/O exception has occurred.\r
133    * @throws ElasticSearchOperationException the elastic search operation exception\r
134    * Need to revisit this test case and change the way this class works\r
135    */\r
136   @Ignore\r
137   public void getElasticSearchSettings_expectValidConfig()\r
138           throws IOException, ElasticSearchOperationException {\r
139     System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
140 \r
141     ElasticSearchConfig esConfig = new ElasticSearchConfig();\r
142 \r
143     esConfig.setSettingsFileName("src/main/config/es_settings.json");\r
144 \r
145     assertNotNull(esConfig.getElasticSearchSettings());\r
146   }\r
147 \r
148   /**\r
149    * Gets the elastic search settings expect file not found exception.\r
150    *\r
151    * @return the elastic search settings expect file not found exception\r
152    * @throws IOException Signals that an I/O exception has occurred.\r
153    * @throws ElasticSearchOperationException the elastic search operation exception\r
154    *\r
155    * Need to revisit this test case and change the way this class works\r
156    */\r
157   @Ignore\r
158   public void getElasticSearchSettings_expectFileNotFoundException()\r
159           throws IOException, ElasticSearchOperationException {\r
160     System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
161 \r
162     ElasticSearchConfig esConfig = new ElasticSearchConfig();\r
163 \r
164     esConfig.setSettingsFileName("src/main/config/es_setting.json");\r
165 \r
166     esConfig.getElasticSearchSettings();\r
167 \r
168   }\r
169 \r
170   /**\r
171    * Gets the elastic search mappings expect valid config.\r
172    *\r
173    * @return the elastic search mappings expect valid config\r
174    * @throws IOException Signals that an I/O exception has occurred.\r
175    * @throws ElasticSearchOperationException the elastic search operation exception\r
176    *\r
177    * Need to revisit this test case and change the way this class works\r
178    */\r
179   @Ignore\r
180   public void getElasticSearchMappings_expectValidConfig()\r
181           throws IOException, ElasticSearchOperationException {\r
182     System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
183 \r
184     ElasticSearchConfig esConfig = new ElasticSearchConfig();\r
185 \r
186     esConfig.setMappingsFileName("src/main/config/es_mappings.json");\r
187 \r
188     assertNotNull(esConfig.getElasticSearchMappings());\r
189   }\r
190 \r
191   /**\r
192    * Gets the elastic search mappings expect file not found exception.\r
193    *\r
194    * @return the elastic search mappings expect file not found exception\r
195    * @throws IOException Signals that an I/O exception has occurred.\r
196    * @throws ElasticSearchOperationException the elastic search operation exception\r
197    */\r
198   @Test(expected = ElasticSearchOperationException.class)\r
199   public void getElasticSearchMappings_expectFileNotFoundException()\r
200           throws IOException, ElasticSearchOperationException {\r
201     System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
202 \r
203     ElasticSearchConfig esConfig = new ElasticSearchConfig();\r
204 \r
205     esConfig.setSettingsFileName("src/main/config/es_setting.json");\r
206 \r
207     esConfig.getElasticSearchMappings();\r
208 \r
209   }\r
210 \r
211   /**\r
212    * Builds the elastic search table config expect valid result.\r
213    *\r
214    * @throws ElasticSearchOperationException the elastic search operation exception\r
215    * @throws IOException Signals that an I/O exception has occurred.\r
216    */\r
217   @Test\r
218   public void buildElasticSearchTableConfig_expectValidResult()\r
219           throws ElasticSearchOperationException, IOException {\r
220     ElasticSearchConfig spyEsConfig = Mockito.spy(new ElasticSearchConfig());\r
221     Mockito.doReturn(GOOD_MAPPINGS_FILE).when(spyEsConfig).getElasticSearchMappings();\r
222     Mockito.doReturn(GOOD_SETTINGS_FILE).when(spyEsConfig).getElasticSearchSettings();\r
223     Mockito.doReturn("myIndexTableType").when(spyEsConfig).getType();\r
224 \r
225     assertNotNull(spyEsConfig.buildElasticSearchTableConfig());\r
226   }\r
227 \r
228   /**\r
229    * Builds the elastic search table config expect exception.\r
230    *\r
231    * @throws ElasticSearchOperationException the elastic search operation exception\r
232    * @throws IOException Signals that an I/O exception has occurred.\r
233    */\r
234   @Test(expected = ElasticSearchOperationException.class)\r
235   public void buildElasticSearchTableConfig_expectException()\r
236           throws ElasticSearchOperationException, IOException {\r
237     ElasticSearchConfig spyEsConfig = Mockito.spy(new ElasticSearchConfig());\r
238     Mockito.doReturn(GOOD_MAPPINGS_FILE).when(spyEsConfig).getElasticSearchMappings();\r
239     Mockito.doReturn(BAD_SETTINGS_FILE).when(spyEsConfig).getElasticSearchSettings();\r
240     Mockito.doReturn("myIndexTableType").when(spyEsConfig).getType();\r
241 \r
242     spyEsConfig.buildElasticSearchTableConfig();\r
243   }\r
244 \r
245   @Test\r
246   public void testGetFullUrl_ThreeParams() throws Exception {\r
247     Mockito.when(elasticSearchConfig.getIpAddress()).thenReturn("http://localhost");\r
248     Mockito.when(elasticSearchConfig.getHttpPort()).thenReturn("5443");\r
249     String fullUrl = elasticSearchConfig.getElasticFullUrl("http://localhost:5443/aai/model/index", "entity-index", "entity");\r
250     Assert.assertNotNull(fullUrl);\r
251   }\r
252 \r
253   @Test\r
254   public void testGetFullUrl_OneParam() throws Exception {\r
255     Mockito.when(elasticSearchConfig.getIpAddress()).thenReturn("http://localhost");\r
256     Mockito.when(elasticSearchConfig.getHttpPort()).thenReturn("5443");\r
257     Mockito.when(elasticSearchConfig.getIndexName()).thenReturn("entity");\r
258     String fullUrl = elasticSearchConfig.getElasticFullUrl("http://localhost:5443/aai/model/index");\r
259     Assert.assertNotNull(fullUrl);\r
260   }\r
261 \r
262   @Test\r
263   public void testGetBulkUrl()  throws Exception {\r
264     Mockito.when(elasticSearchConfig.getIpAddress()).thenReturn("http://localhost");\r
265     Mockito.when(elasticSearchConfig.getHttpPort()).thenReturn("5443");\r
266     String fullUrl = elasticSearchConfig.getBulkUrl();\r
267     Assert.assertNotNull(fullUrl);\r
268   }\r
269 \r
270   @Test\r
271   public void testGetConfigAsString() throws IOException, ElasticSearchOperationException {\r
272     System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
273     String retStr = elasticSearchConfig.getConfigAsString("item-1", System.getProperty("AJSC_HOME")+"/src/test/resources/appconfig/roles.config");\r
274     Assert.assertNotNull(retStr);\r
275   }\r
276 \r
277 }\r