f3ee9416414f6179b8d2d900286351d81d21c87e
[so.git] /
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
33 import javax.json.*;
34
35 import org.junit.Test;
36 import org.junit.runner.RunWith;
37 import org.openecomp.mso.adapters.catalogdb.CatalogDbAdapterRest;
38 import org.openecomp.mso.adapters.catalogdb.catalogrest.CatalogQueryException;
39 import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceVnfs;
40 import org.openecomp.mso.db.catalog.CatalogDatabase;
41 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
42 import org.mockito.Mock;
43 import org.mockito.Mockito;
44 import org.junit.Before;
45 import org.powermock.api.mockito.PowerMockito;
46 import org.powermock.core.classloader.annotations.PrepareForTest;
47 import org.powermock.modules.junit4.PowerMockRunner;
48
49 import static org.junit.Assert.*;
50 import static org.mockito.Mockito.when;
51 import static org.powermock.api.mockito.PowerMockito.mockStatic;
52 import static org.powermock.api.mockito.PowerMockito.verifyStatic;
53 import static org.hamcrest.CoreMatchers.instanceOf;
54
55 @RunWith(PowerMockRunner.class)
56 @PrepareForTest({CatalogDbAdapterRest.class, CatalogDatabase.class})
57 public class CatalogDbAdapterRestClassTest {
58     @Mock
59     private static CatalogDatabase dbMock;
60
61     private static List<VnfResourceCustomization> paramList;
62
63     @Before
64     public void prepare() {
65         /*
66          * 1.  for non routing related methods/classes, use mockito
67          * 2. for routing methods, use TJWSEmbeddedJaxrsServer
68          */
69
70         /*
71          * in the setup portion, create a mock db object
72          *
73          */
74         // set up mock return value
75         paramList = new ArrayList<>();
76         VnfResourceCustomization d1 = new VnfResourceCustomization();
77         d1.setModelCustomizationUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
78         d1.setModelInstanceName("ciVFOnboarded-FNAT-aab06c41 1");
79         paramList.add(d1);
80         // end  
81
82         PowerMockito.mockStatic(CatalogDatabase.class);
83         dbMock = PowerMockito.mock(CatalogDatabase.class);
84         PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(dbMock);
85         try {
86
87             PowerMockito.whenNew(CatalogDatabase.class).withAnyArguments().thenReturn(dbMock);
88             PowerMockito.spy(dbMock);
89
90         } catch (Exception e) {
91             e.printStackTrace();
92         }
93     }
94
95     @Test
96     public void respond_Test() {
97         QueryServiceVnfs qryResp = new QueryServiceVnfs(paramList);
98         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
99         CatalogDbAdapterRest spyAdapter = Mockito.spy(adapter);
100
101         Response resp = spyAdapter.respond("v1", HttpStatus.SC_OK, false, qryResp);
102         Mockito.verify(spyAdapter, Mockito.times(1)).respond("v1", HttpStatus.SC_OK, false, qryResp);
103
104         String s = resp.getEntity().toString();
105         // System.out.println(s);
106
107         // prepare to inspect response
108         JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
109         JsonObject respObj = reader.readObject();
110         reader.close();
111         // end
112         JsonArray jArray = respObj.getJsonArray("serviceVnfs");
113
114         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
115         assertEquals(jArray.size(), 1);
116         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
117     }
118
119
120     @Test
121     public void serviceVnfsImpl_vnfUuid_ver_Test() {
122         PowerMockito.when(dbMock.getAllVnfsByVnfModelCustomizationUuid(Mockito.anyString())).thenReturn(paramList);
123
124         try {
125             CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
126
127             // Run
128             Response resp = adapter.serviceVnfsImpl("v1", true, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null, null);
129             String s = resp.getEntity().toString();
130
131             // prepare to inspect response
132             JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
133             JsonObject respObj = reader.readObject();
134             reader.close();
135             // end
136             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
137
138             assertEquals(resp.getStatus(), HttpStatus.SC_OK);
139             assertEquals(jArray.size(), 1);
140             assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
141             //
142             Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByVnfModelCustomizationUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
143
144         } catch (Exception e) {
145             e.printStackTrace();
146         }
147     }
148
149     @Test
150     public void serviceVnfsImpl_smiUuid_NoVer_Test() {
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         PowerMockito.when(dbMock.getAllVnfsByServiceModelUuid(Mockito.anyString())).thenReturn(paramList);
180
181         try {
182             CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
183
184             // Run
185             Response resp = adapter.serviceVnfsImpl("v1", true, null, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null);
186             String s = resp.getEntity().toString();
187
188             // prepare to inspect response
189             JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
190             JsonObject respObj = reader.readObject();
191             reader.close();
192             // end
193             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
194
195             assertEquals(resp.getStatus(), HttpStatus.SC_OK);
196             assertEquals(jArray.size(), 1);
197             assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
198             Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceModelUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
199
200         } catch (Exception e) {
201             e.printStackTrace();
202         }
203     }
204
205     @Test
206     public void serviceVnfsImpl_smiUuid_ver_Test() {
207         PowerMockito.when(dbMock.getAllVnfsByServiceModelInvariantUuid(Mockito.anyString(), Mockito.anyString())).thenReturn(paramList);
208
209         try {
210             CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
211
212             // Run
213             Response resp = adapter.serviceVnfsImpl("v1", true, null, null, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", "v1", null);
214             String s = resp.getEntity().toString();
215
216             // prepare to inspect response
217             JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
218             JsonObject respObj = reader.readObject();
219             reader.close();
220             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
221             // end
222
223             assertEquals(resp.getStatus(), HttpStatus.SC_OK);
224             assertEquals(jArray.size(), 1);
225             assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
226             Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceModelInvariantUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391", "v1");
227
228         } catch (Exception e) {
229             e.printStackTrace();
230         }
231     }
232
233     @Test
234     public void serviceVnfsImpl_smName_ver_Test() {
235         PowerMockito.when(dbMock.getAllVnfsByServiceName(Mockito.anyString(), Mockito.anyString())).thenReturn(paramList);
236
237         try {
238             CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
239
240             // Run
241             Response resp = adapter.serviceVnfsImpl("v1", true, null, null, null, "v1", "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
242             String s = resp.getEntity().toString();
243
244             // prepare to inspect response
245             JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
246             JsonObject respObj = reader.readObject();
247             reader.close();
248             // end
249             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
250
251             assertEquals(resp.getStatus(), HttpStatus.SC_OK);
252             assertEquals(jArray.size(), 1);
253             assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
254             Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceName("16ea3e56-a8ce-4ad7-8edd-4d2eae095391", "v1");
255
256         } catch (Exception e) {
257             e.printStackTrace();
258         }
259     }
260
261     @Test
262     public void serviceVnfsImpl_smName_NoVer_Test() {
263         PowerMockito.when(dbMock.getAllVnfsByServiceName(Mockito.anyString())).thenReturn(paramList);
264
265         try {
266             CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
267
268             // Run
269             Response resp = adapter.serviceVnfsImpl("v1", true, null, null, null, null, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
270             String s = resp.getEntity().toString();
271
272             // prepare to inspect response
273             JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
274             JsonObject respObj = reader.readObject();
275             reader.close();
276             // end
277             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
278
279             assertEquals(resp.getStatus(), HttpStatus.SC_OK);
280             assertEquals(jArray.size(), 1);
281             assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
282             Mockito.verify(dbMock, Mockito.times(1)).getAllVnfsByServiceName("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
283
284         } catch (Exception e) {
285             e.printStackTrace();
286         }
287     }
288
289     @Test
290     public void serviceVnfsImpl_Exception_Test() {
291         PowerMockito.when(dbMock.getAllVnfsByServiceName(Mockito.anyString())).thenReturn(null);
292
293         try {
294             CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
295
296             // Run
297             Response resp = adapter.serviceVnfsImpl("v1", true, null, null, null, null, null);
298
299             assertEquals(resp.getStatus(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
300             assertThat(resp.getEntity(), instanceOf(CatalogQueryException.class));
301         } catch (Exception e) {
302             e.printStackTrace();
303         }
304     }
305
306     @Test
307     public void serviceNetworksImpl_nUuid_ver_Test() {
308         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
309         CatalogDbAdapterRest spyAdapter = Mockito.spy(adapter);
310
311         Response resp = Response
312                 .status(HttpStatus.SC_OK)
313                 .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}]}")
314                 .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
315                 .build();
316
317         Mockito.doReturn(resp).when(spyAdapter).serviceNetworksImpl(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
318
319         // Run
320
321         Response ret = spyAdapter.serviceNetworksImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null, null);
322         Mockito.verify(spyAdapter).serviceNetworksImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null, null);
323
324         assertTrue(ret.getStatus() == HttpStatus.SC_OK);
325         String s = resp.getEntity().toString();
326
327         // prepare to inspect response
328         JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
329         JsonObject respObj = reader.readObject();
330         reader.close();
331         // end
332         JsonArray jArray = respObj.getJsonArray("serviceVnfs");
333
334         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
335         assertEquals(jArray.size(), 1);
336         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
337
338     }
339
340     @Test
341     public void serviceAllottedResourcesImpl_Test() {
342         CatalogDbAdapterRest adapter = new CatalogDbAdapterRest();
343         CatalogDbAdapterRest spyAdapter = Mockito.spy(adapter);
344
345         Response resp = Response
346                 .status(HttpStatus.SC_OK)
347                 .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}]}")
348                 .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
349                 .build();
350
351         Mockito.doReturn(resp).when(spyAdapter).serviceAllottedResourcesImpl(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
352
353         // Run
354
355         Response ret = spyAdapter.serviceAllottedResourcesImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null);
356         Mockito.verify(spyAdapter).serviceAllottedResourcesImpl("v1", false, "16ea3e56-a8ce-4ad7-8edd-4d2eae095391", null, null, null);
357
358         assertTrue(ret.getStatus() == HttpStatus.SC_OK);
359         String s = resp.getEntity().toString();
360
361         // prepare to inspect response
362         JsonReader reader = Json.createReader(new StringReader(s.replaceAll("\r?\n", "")));
363         JsonObject respObj = reader.readObject();
364         reader.close();
365         // end
366         JsonArray jArray = respObj.getJsonArray("serviceVnfs");
367
368         assertEquals(resp.getStatus(), HttpStatus.SC_OK);
369         assertEquals(jArray.size(), 1);
370         assertEquals(jArray.getJsonObject(0).getString("modelCustomizationUuid"), "16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
371
372     }
373
374 }