Merge "Reorder modifiers"
[so.git] / adapters / mso-catalog-db-adapter / src / test / java / org / openecomp / mso / adapters / catalogdb / CatalogDbAdapterRestClassTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.mso.adapters.catalogdb;
22
23 import java.io.StringReader;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import javax.ws.rs.core.HttpHeaders;
28 import javax.ws.rs.core.MediaType;
29 import javax.ws.rs.core.Response;
30
31 import org.apache.http.HttpStatus;
32 import javax.json.*;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.openecomp.mso.adapters.catalogdb.CatalogDbAdapterRest;
36 import org.openecomp.mso.adapters.catalogdb.catalogrest.CatalogQueryException;
37 import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceVnfs;
38 import org.openecomp.mso.db.catalog.CatalogDatabase;
39 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
40 import org.mockito.Mock;
41 import org.mockito.Mockito;
42 import org.junit.Before;
43 import org.powermock.api.mockito.PowerMockito;
44 import org.powermock.core.classloader.annotations.PrepareForTest;
45 import org.powermock.modules.junit4.PowerMockRunner;
46
47 import static org.junit.Assert.*;
48 import static org.mockito.Mockito.when;
49 import static org.powermock.api.mockito.PowerMockito.mockStatic;
50 import static org.powermock.api.mockito.PowerMockito.verifyStatic;
51 import static org.hamcrest.CoreMatchers.instanceOf;
52
53 @RunWith(PowerMockRunner.class)
54 @PrepareForTest({CatalogDbAdapterRest.class, CatalogDatabase.class})
55 public class CatalogDbAdapterRestClassTest {
56     @Mock
57     private static CatalogDatabase dbMock;
58     
59     private static List<VnfResourceCustomization> paramList;
60         
61     @Before
62     public void prepare () {
63                 /*
64                  * 1.  for non routing related methods/classes, use mockito
65                  * 2. for routing methods, use TJWSEmbeddedJaxrsServer  
66                  */
67                 
68                 /*
69                  * in the setup portion, create a mock db object
70                  * 
71                  */
72         // set up mock return value
73         paramList = new ArrayList<>();
74         VnfResourceCustomization d1 = new VnfResourceCustomization();
75         d1.setModelCustomizationUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
76         d1.setModelInstanceName("ciVFOnboarded-FNAT-aab06c41 1");
77         paramList.add(d1);
78         // end  
79         
80                 PowerMockito.mockStatic(CatalogDatabase.class);
81                 dbMock = PowerMockito.mock(CatalogDatabase.class);
82                 PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(dbMock);
83                 try {
84                         
85                         PowerMockito.whenNew(CatalogDatabase.class).withAnyArguments().thenReturn(dbMock);
86                         PowerMockito.spy (dbMock);
87                         
88                 } catch (Exception e) {
89                         e.printStackTrace();
90                 }
91     }
92     
93     @Test
94     public void respond_Test(){
95         QueryServiceVnfs qryResp = new QueryServiceVnfs(paramList);
96                 CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
97                 CatalogDbAdapterRest spyAdapter = Mockito.spy(adapter);
98                 
99                 Response resp = spyAdapter.respond("v1", HttpStatus.SC_OK, false, qryResp);
100         Mockito.verify(spyAdapter,Mockito.times(1)).respond("v1", HttpStatus.SC_OK, false, qryResp);
101                 
102         String s = resp.getEntity().toString();
103         // System.out.println(s);
104
105         // prepare to inspect response
106         JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
107         JsonObject respObj = reader.readObject();
108         reader.close();
109         // end
110         JsonArray jArray = respObj.getJsonArray("serviceVnfs");
111         
112                 assertEquals(resp.getStatus(), HttpStatus.SC_OK);
113                 assertEquals(jArray.size(), 1);
114                 assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");              
115     }
116     
117             
118         @Test
119     public void serviceVnfsImpl_vnfUuid_ver_Test()
120     {
121         PowerMockito.when(dbMock.getAllVnfsByVnfModelCustomizationUuid(Mockito.anyString())).thenReturn (paramList);
122                 
123                 try {
124                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
125                         
126                 // Run
127                 Response resp = adapter.serviceVnfsImpl("v1", true, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null, null);
128                 String s = resp.getEntity().toString();
129
130                 // prepare to inspect response
131                 JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
132                 JsonObject respObj = reader.readObject();
133                 reader.close();
134                 // end
135                 JsonArray jArray = respObj.getJsonArray("serviceVnfs");
136                 
137                         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
138                         assertEquals(jArray.size(), 1);
139                         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
140                         //
141                         Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByVnfModelCustomizationUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
142                         
143                 } catch (Exception e) {
144                         e.printStackTrace();
145                 }
146     }
147
148         @Test
149         public void serviceVnfsImpl_smiUuid_NoVer_Test()
150         {
151         PowerMockito.when(dbMock.getAllVnfsByServiceModelInvariantUuid(Mockito.anyString())).thenReturn (paramList);
152                 
153                 try {
154                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
155                         
156                 // Run
157                 Response resp = adapter.serviceVnfsImpl("v1", true, null, null, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null);
158                 String s = resp.getEntity().toString();
159
160                 // prepare to inspect response
161                 JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
162                 JsonObject respObj = reader.readObject();
163                 reader.close();
164                 // end
165                 JsonArray jArray = respObj.getJsonArray("serviceVnfs");
166                 
167                         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
168                         assertEquals(jArray.size(), 1);
169                         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
170                         Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceModelInvariantUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
171                         
172                 } catch (Exception e) {
173                         e.printStackTrace();
174                 }               
175         }       
176         
177         @Test
178         public void serviceVnfsImpl_smUuid_ver_Test()
179         {
180         PowerMockito.when(dbMock.getAllVnfsByServiceModelUuid(Mockito.anyString())).thenReturn (paramList);
181                 
182                 try {
183                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
184                         
185                 // Run
186                 Response resp = adapter.serviceVnfsImpl("v1", true, null,"16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null);
187                 String s = resp.getEntity().toString();
188
189                 // prepare to inspect response
190                 JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
191                 JsonObject respObj = reader.readObject();
192                 reader.close();
193                 // end
194                 JsonArray jArray = respObj.getJsonArray("serviceVnfs");
195                 
196                         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
197                         assertEquals(jArray.size(), 1);
198                         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
199                         Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceModelUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
200                         
201                 } catch (Exception e) {
202                         e.printStackTrace();
203                 }               
204         }
205         
206         @Test
207         public void serviceVnfsImpl_smiUuid_ver_Test()
208         {
209         PowerMockito.when(dbMock.getAllVnfsByServiceModelInvariantUuid(Mockito.anyString(),Mockito.anyString())).thenReturn (paramList);
210                 
211                 try {
212                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
213                         
214                 // Run
215                 Response resp = adapter.serviceVnfsImpl("v1", true, null, null, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", "v1", null);
216                 String s = resp.getEntity().toString();
217
218                 // prepare to inspect response
219                 JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
220                 JsonObject respObj = reader.readObject();
221                 reader.close();
222                 JsonArray jArray = respObj.getJsonArray("serviceVnfs");
223                 // end
224                 
225                         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
226                         assertEquals(jArray.size(), 1);
227                         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
228                         Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceModelInvariantUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391","v1");
229                         
230                 } catch (Exception e) {
231                         e.printStackTrace();
232                 }               
233         }       
234         
235         @Test
236         public void serviceVnfsImpl_smName_ver_Test()
237         {
238         PowerMockito.when(dbMock.getAllVnfsByServiceName(Mockito.anyString(),Mockito.anyString())).thenReturn (paramList);
239                 
240                 try {
241                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
242                         
243                 // Run
244                 Response resp = adapter.serviceVnfsImpl("v1", true, null, null, null, "v1", "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
245                 String s = resp.getEntity().toString();
246
247                 // prepare to inspect response
248                 JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
249                 JsonObject respObj = reader.readObject();
250                 reader.close();
251                 // end
252                 JsonArray jArray = respObj.getJsonArray("serviceVnfs");
253                 
254                         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
255                         assertEquals(jArray.size(), 1);
256                         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
257                         Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceName("16ea3e56-a8ce-4ad7-8edd-4d2eae095391","v1");
258                         
259                 } catch (Exception e) {
260                         e.printStackTrace();
261                 }                       
262         }
263         
264         @Test
265         public void serviceVnfsImpl_smName_NoVer_Test()
266         {
267         PowerMockito.when(dbMock.getAllVnfsByServiceName(Mockito.anyString())).thenReturn (paramList);
268                 
269                 try {
270                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
271                         
272                 // Run
273                 Response resp = adapter.serviceVnfsImpl("v1", true, null, null, null, null, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
274                 String s = resp.getEntity().toString();
275
276                 // prepare to inspect response
277                 JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
278                 JsonObject respObj = reader.readObject();
279                 reader.close();
280                 // end
281                 JsonArray jArray = respObj.getJsonArray("serviceVnfs");
282                 
283                         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
284                         assertEquals(jArray.size(), 1);
285                         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
286                         Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceName("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
287                         
288                 } catch (Exception e) {
289                         e.printStackTrace();
290                 }                       
291         }       
292     
293         @Test
294         public void serviceVnfsImpl_Exception_Test()
295         {
296         PowerMockito.when(dbMock.getAllVnfsByServiceName(Mockito.anyString())).thenReturn (null);
297                 
298                 try {
299                         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
300                         
301                 // Run
302                 Response resp = adapter.serviceVnfsImpl("v1", true, null, null, null, null, null);
303                 
304                         assertEquals(resp.getStatus(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
305                         assertThat(resp.getEntity(), instanceOf(CatalogQueryException.class));
306                 } catch (Exception e) {
307                         e.printStackTrace();
308                 }                       
309         }       
310         
311     @Test
312     public void serviceNetworksImpl_nUuid_ver_Test(){
313                 CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
314                 CatalogDbAdapterRest spyAdapter = Mockito.spy(adapter);
315                 
316                 Response resp = Response
317                                 .status(HttpStatus.SC_OK)
318                                 .entity("{\"serviceVnfs\":[{\"version\":\"v1\",\"modelCustomizationUuid\":\"16ea3e56-a8ce-4ad7-8edd-4d2eae095391\",\"modelInstanceName\":\"ciVFOnboarded-FNAT-aab06c41 1\",\"created\":null,\"vnfResourceModelUuid\":null,\"vnfResourceModelUUID\":null,\"minInstances\":null,\"maxInstances\":null,\"availabilityZoneMaxCount\":null,\"vnfResource\":null,\"nfFunction\":null,\"nfType\":null,\"nfRole\":null,\"nfNamingCode\":null,\"multiStageDesign\":null,\"vfModuleCustomizations\":null,\"serviceResourceCustomizations\":null,\"creationTimestamp\":null}]}")
319                                 .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
320                                 .build();
321                 
322                 Mockito.doReturn(resp).when(spyAdapter).serviceNetworksImpl(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
323                 
324                 // Run
325                 
326                 Response ret = spyAdapter.serviceNetworksImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391",null, null, null, null);
327         Mockito.verify(spyAdapter).serviceNetworksImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null, null);
328                 
329         assertTrue(ret.getStatus() == HttpStatus.SC_OK);
330         String s = resp.getEntity().toString();
331
332         // prepare to inspect response
333         JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
334         JsonObject respObj = reader.readObject();
335         reader.close();
336         // end
337         JsonArray jArray = respObj.getJsonArray("serviceVnfs");
338         
339                 assertEquals(resp.getStatus(), HttpStatus.SC_OK);
340                 assertEquals(jArray.size(), 1);
341                 assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");      
342         
343     }
344     
345     @Test
346     public void serviceAllottedResourcesImpl_Test()
347     {
348                 CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
349                 CatalogDbAdapterRest spyAdapter = Mockito.spy(adapter);
350                 
351                 Response resp = Response
352                                 .status(HttpStatus.SC_OK)
353                                 .entity("{\"serviceVnfs\":[{\"version\":\"v1\",\"modelCustomizationUuid\":\"16ea3e56-a8ce-4ad7-8edd-4d2eae095391\",\"modelInstanceName\":\"ciVFOnboarded-FNAT-aab06c41 1\",\"created\":null,\"vnfResourceModelUuid\":null,\"vnfResourceModelUUID\":null,\"minInstances\":null,\"maxInstances\":null,\"availabilityZoneMaxCount\":null,\"vnfResource\":null,\"nfFunction\":null,\"nfType\":null,\"nfRole\":null,\"nfNamingCode\":null,\"multiStageDesign\":null,\"vfModuleCustomizations\":null,\"serviceResourceCustomizations\":null,\"creationTimestamp\":null}]}")
354                                 .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
355                                 .build();
356                 
357                 Mockito.doReturn(resp).when(spyAdapter).serviceAllottedResourcesImpl(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
358                 
359                 // Run
360                 
361                 Response ret = spyAdapter.serviceAllottedResourcesImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391",null, null, null);
362         Mockito.verify(spyAdapter).serviceAllottedResourcesImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null);
363                 
364         assertTrue(ret.getStatus() == HttpStatus.SC_OK);
365         String s = resp.getEntity().toString();
366
367         // prepare to inspect response
368         JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
369         JsonObject respObj = reader.readObject();
370         reader.close();
371         // end
372         JsonArray jArray = respObj.getJsonArray("serviceVnfs");
373         
374                 assertEquals(resp.getStatus(), HttpStatus.SC_OK);
375                 assertEquals(jArray.size(), 1);
376                 assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");      
377                 
378     }
379     
380 }