1f8022751443cc633b7702dccc0c1d0df94cbeb8
[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 javax.json.Json;
24 import javax.json.JsonArray;
25 import javax.json.JsonObject;
26 import javax.json.JsonReader;
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.jboss.resteasy.plugins.server.tjws.TJWSEmbeddedJaxrsServer;
32
33 import static org.junit.Assert.*;
34
35 import java.io.StringReader;
36 import java.util.ArrayList;
37 import java.util.List;
38
39 import org.jboss.resteasy.spi.Registry;
40 import org.jboss.resteasy.spi.ResteasyProviderFactory;
41 import org.junit.AfterClass;
42 import org.junit.Before;
43 import org.junit.BeforeClass;
44 import org.junit.Test;
45 import org.junit.runner.RunWith;
46 import org.mockito.Mock;
47 import org.mockito.Mockito;
48 import org.mockito.runners.MockitoJUnitRunner;
49 import org.openecomp.mso.adapters.catalogdb.CatalogDbAdapterRest;
50 import org.openecomp.mso.db.catalog.CatalogDatabase;
51 import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
52 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
53 import org.openecomp.mso.db.catalog.beans.ServiceMacroHolder;
54 import org.openecomp.mso.db.catalog.beans.VfModule;
55 import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
56 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
57 import org.powermock.api.mockito.PowerMockito;
58 import org.powermock.core.classloader.annotations.PowerMockIgnore;
59 import org.powermock.core.classloader.annotations.PrepareForTest;
60 import org.apache.http.HttpStatus;
61 import org.jboss.resteasy.client.jaxrs.ResteasyClient;
62 import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
63 import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
64 import org.powermock.modules.junit4.PowerMockRunner;
65
66
67 @RunWith(PowerMockRunner.class)
68 @PrepareForTest({CatalogDatabase.class})
69 @PowerMockIgnore("javax.net.ssl.*")
70 public class CatalogDbAdapterRestHttpTest {
71     @Mock
72     private static CatalogDatabase dbMock;
73     private static TJWSEmbeddedJaxrsServer server;
74     private static final int PORT = 3099;
75     private static Registry registry;
76     private static ResteasyProviderFactory factory;
77
78     @BeforeClass
79     public static void beforeClass() throws Exception {
80         server = new TJWSEmbeddedJaxrsServer();
81         server.setPort(PORT);
82         server.start();
83         registry = server.getDeployment().getRegistry();
84         factory = server.getDeployment().getDispatcher().getProviderFactory();
85         registry.addPerRequestResource(CatalogDbAdapterRest.class);
86         factory.registerProvider(CatalogDbAdapterRest.class);
87     }
88
89     @Before
90     public void before() {
91         PowerMockito.mockStatic(CatalogDatabase.class);
92         dbMock = PowerMockito.mock(CatalogDatabase.class);
93         PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(dbMock);
94
95         try {
96             PowerMockito.whenNew(CatalogDatabase.class).withAnyArguments().thenReturn(dbMock);
97
98         } catch (Exception e) {
99             e.printStackTrace();
100         }
101     }
102
103     @Test
104     public void healthCheck_Test() {
105         ResteasyClient client = new ResteasyClientBuilder().build();
106         ResteasyWebTarget target = client.target("http://localhost:3099/v1/healthcheck");
107         Response response = target.request().get();
108         String value = response.readEntity(String.class);
109         assertTrue(value.contains("Application v1 ready"));
110     }
111
112     @Test
113     public void vnfResourcesUrl_Test() {
114         try {
115             List<VnfResourceCustomization> paramList;
116             // set up mock return value
117             paramList = new ArrayList<>();
118             VnfResourceCustomization d1 = new VnfResourceCustomization();
119             d1.setModelCustomizationUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
120             d1.setModelInstanceName("RG_6-26_mog11 0");
121             d1.setVersion("v1");
122             paramList.add(d1);
123             PowerMockito.when(dbMock.getAllVnfsByVnfModelCustomizationUuid(Mockito.anyString())).thenReturn(paramList);
124             // end
125
126             // Run
127             ResteasyClient client = new ResteasyClientBuilder().build();
128             ResteasyWebTarget target = client.target("http://localhost:3099/v1/vnfResources/16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
129             Response response = target.request().get();
130             String value = response.readEntity(String.class);
131
132             // prepare to inspect response
133             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
134             JsonObject respObj = reader.readObject();
135             reader.close();
136             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
137             assertTrue(jArray.size() == 1);
138             if (jArray.size() == 1) {
139                 JsonObject rec = jArray.getJsonObject(0);
140                 String version = rec.getString("version");
141                 String uuid = rec.getString("modelCustomizationUuid");
142
143                 assertTrue(version.equals("v1"));
144                 assertTrue(uuid.equals("16ea3e56-a8ce-4ad7-8edd-4d2eae095391"));
145             }
146             // end
147         } catch (Exception e) {
148             e.printStackTrace();
149         }
150     }
151
152     @Test
153     public void serviceVnfsUrl_smiUuid_smVer_Test() {
154         try {
155             List<VnfResourceCustomization> paramList;
156             // set up mock return value
157             paramList = new ArrayList<>();
158             VnfResourceCustomization d1 = new VnfResourceCustomization();
159             d1.setVnfResourceModelUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
160             d1.setModelInstanceName("RG_6-26_mog11 0");
161             d1.setVersion("v1");
162             d1.setMaxInstances(50);
163             paramList.add(d1);
164             PowerMockito.when(dbMock.getAllVnfsByServiceModelInvariantUuid(Mockito.anyString(), Mockito.anyString())).thenReturn(paramList);
165             // end
166
167             // Run
168             ResteasyClient client = new ResteasyClientBuilder().build();
169             ResteasyWebTarget target = client.target("http://localhost:3099/v1/serviceVnfs?serviceModelInvariantUuid=16ea3e56-a8ce-4ad7-8edd-4d2eae095391&serviceModelVersion=ver1");
170             Response response = target.request().get();
171             String value = response.readEntity(String.class);
172
173             // prepare to inspect response
174             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
175             JsonObject respObj = reader.readObject();
176             reader.close();
177             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
178             assertTrue(jArray.size() == 1);
179             if (jArray.size() == 1) {
180                 JsonObject rec = jArray.getJsonObject(0);
181                 String version = rec.getString("version");
182                 String uuid = rec.getString("vnfResourceModelUuid");
183                 int maxInstance = rec.getInt("maxInstances");
184
185                 assertTrue(version.equals("v1"));
186                 assertTrue(uuid.equals("16ea3e56-a8ce-4ad7-8edd-4d2eae095391"));
187                 assertTrue(maxInstance == 50);
188             }
189             // end
190         } catch (Exception e) {
191             e.printStackTrace();
192             fail(e.getMessage());
193         }
194     }
195
196     @Test
197     public void serviceVnfsUrl_vnfUuid_Test() {
198         try {
199             List<VnfResourceCustomization> paramList;
200             // set up mock return value
201             paramList = new ArrayList<>();
202             VnfResourceCustomization d1 = new VnfResourceCustomization();
203             d1.setModelCustomizationUuid("16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
204             d1.setModelInstanceName("RG_6-26_mog11 0");
205             d1.setVersion("v1");
206             paramList.add(d1);
207             PowerMockito.when(dbMock.getAllVnfsByVnfModelCustomizationUuid(Mockito.anyString())).thenReturn(paramList);
208             // end
209
210             // Run
211             ResteasyClient client = new ResteasyClientBuilder().build();
212             ResteasyWebTarget target = client.target("http://localhost:3099/v1/serviceVnfs?vnfModelCustomizationUuid=16ea3e56-a8ce-4ad7-8edd-4d2eae095391");
213             Response response = target.request().get();
214             String value = response.readEntity(String.class);
215
216             // System.out.println(value);
217
218             // prepare to inspect response
219             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
220             JsonObject respObj = reader.readObject();
221             reader.close();
222             JsonArray jArray = respObj.getJsonArray("serviceVnfs");
223             assertTrue(jArray.size() == 1);
224             if (jArray.size() == 1) {
225                 JsonObject rec = jArray.getJsonObject(0);
226                 String version = rec.getString("version");
227                 String uuid = rec.getString("modelCustomizationUuid");
228
229                 assertTrue(version.equals("v1"));
230                 assertTrue(uuid.equals("16ea3e56-a8ce-4ad7-8edd-4d2eae095391"));
231             }
232             // end
233
234         } catch (Exception e) {
235             e.printStackTrace();
236             fail(e.getMessage());
237         }
238     }
239
240     @Test
241     public void networkResourcesUrl_nUuid_Ver_Test() {
242         try {
243             List<NetworkResourceCustomization> paramList;
244             // set up mock return value
245             paramList = new ArrayList<>();
246             NetworkResourceCustomization d1 = new NetworkResourceCustomization();
247             d1.setNetworkResourceModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
248             paramList.add(d1);
249             PowerMockito.when(dbMock.getAllNetworksByNetworkModelCustomizationUuid(Mockito.anyString())).thenReturn(paramList);
250             // end
251
252             // Run
253             ResteasyClient client = new ResteasyClientBuilder().build();
254             ResteasyWebTarget target = client.target("http://localhost:3099/v1/networkResources/0cb9b26a-9820-48a7-86e5-16c510e993d9");
255             Response response = target.request().get();
256             String value = response.readEntity(String.class);
257
258             // System.out.println(value);
259
260             // prepare to inspect response
261             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
262             JsonObject respObj = reader.readObject();
263             reader.close();
264             JsonArray jArray = respObj.getJsonArray("serviceNetworks");
265             assertTrue(jArray.size() == 1);
266             if (jArray.size() == 1) {
267                 JsonObject rec = jArray.getJsonObject(0);
268                 String uuid = rec.getString("networkResourceModelUuid");
269
270                 assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
271             }
272             // end
273
274         } catch (Exception e) {
275             e.printStackTrace();
276             fail(e.getMessage());
277         }
278     }
279
280     @Test
281     public void serviceNetworksUrl_nType_Test() {
282         try {
283             List<NetworkResourceCustomization> paramList;
284             // set up mock return value
285             paramList = new ArrayList<>();
286             NetworkResourceCustomization d1 = new NetworkResourceCustomization();
287             d1.setNetworkResourceModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
288             paramList.add(d1);
289             PowerMockito.when(dbMock.getAllNetworksByNetworkType(Mockito.anyString())).thenReturn(paramList);
290             // end
291
292             // Run
293             ResteasyClient client = new ResteasyClientBuilder().build();
294             ResteasyWebTarget target = client.target("http://localhost:3099/v1/serviceNetworks?networkModelName=0cb9b26a-9820-48a7-86e5-16c510e993d9");
295             Response response = target.request().get();
296             String value = response.readEntity(String.class);
297
298             // System.out.println(value);
299
300             // prepare to inspect response
301             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
302             JsonObject respObj = reader.readObject();
303             reader.close();
304             JsonArray jArray = respObj.getJsonArray("serviceNetworks");
305             assertTrue(jArray.size() == 1);
306             if (jArray.size() == 1) {
307                 JsonObject rec = jArray.getJsonObject(0);
308                 String uuid = rec.getString("networkResourceModelUuid");
309
310                 assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
311             }
312             // end
313
314         } catch (Exception e) {
315             e.printStackTrace();
316             fail(e.getMessage());
317         }
318     }
319
320     @Test
321     public void serviceResourcesUrl_smiUuid_Ver_Test() {
322         try {
323             ArrayList<NetworkResourceCustomization> paramList;
324             // set up mock return value
325             paramList = new ArrayList<>();
326             NetworkResourceCustomization d1 = new NetworkResourceCustomization();
327             d1.setNetworkResourceModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
328             paramList.add(d1);
329             ServiceMacroHolder ret = new ServiceMacroHolder();
330             ret.setNetworkResourceCustomization(paramList);
331             PowerMockito.when(dbMock.getAllResourcesByServiceModelInvariantUuid(Mockito.anyString(), Mockito.anyString())).thenReturn(ret);
332             // end
333
334             // Run
335             ResteasyClient client = new ResteasyClientBuilder().build();
336             ResteasyWebTarget target = client.target("http://localhost:3099/v1/serviceResources?serviceModelInvariantUuid=0cb9b26a-9820-48a7-86e5-16c510e993d9&serviceModelVersion=ver1");
337             Response response = target.request().get();
338             String value = response.readEntity(String.class);
339
340             // System.out.println(value);
341
342             // prepare to inspect response
343             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
344             JsonObject respObj = reader.readObject();
345             reader.close();
346             JsonObject obj = respObj.getJsonObject("serviceResources");
347             JsonArray jArray = obj.getJsonArray("networkResourceCustomization");
348             assertTrue(jArray.size() == 1);
349
350             if (jArray.size() == 1) {
351                 JsonObject rec = jArray.getJsonObject(0);
352                 String uuid = rec.getString("networkResourceModelUuid");
353
354                 assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
355             }
356             // end
357
358         } catch (Exception e) {
359             e.printStackTrace();
360             fail(e.getMessage());
361         }
362     }
363
364     @Test
365     public void allottedResourcesUrl_aUuid_Test() {
366         try {
367             List<AllottedResourceCustomization> paramList;
368             // set up mock return value
369             paramList = new ArrayList<>();
370             AllottedResourceCustomization d1 = new AllottedResourceCustomization();
371             d1.setArModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
372             paramList.add(d1);
373             PowerMockito.when(dbMock.getAllAllottedResourcesByArModelCustomizationUuid(Mockito.anyString())).thenReturn(paramList);
374             // end
375
376             // Run
377             ResteasyClient client = new ResteasyClientBuilder().build();
378             ResteasyWebTarget target = client.target("http://localhost:3099/v1/allottedResources/0cb9b26a-9820-48a7-86e5-16c510e993d9");
379             Response response = target.request().get();
380             String value = response.readEntity(String.class);
381
382             // System.out.println(value);
383
384             // prepare to inspect response
385             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
386             JsonObject respObj = reader.readObject();
387             reader.close();
388             JsonArray jArray = respObj.getJsonArray("serviceAllottedResources");
389             assertTrue(jArray.size() == 1);
390             if (jArray.size() == 1) {
391                 JsonObject rec = jArray.getJsonObject(0);
392                 String uuid = rec.getString("arModelUuid");
393
394                 assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
395             }
396             // end
397
398         } catch (Exception e) {
399             e.printStackTrace();
400             fail(e.getMessage());
401         }
402
403     }
404
405     @Test
406     public void serviceAllottedResourcesUrl_smiUuid_Test() {
407         try {
408             List<AllottedResourceCustomization> paramList;
409             // set up mock return value
410             paramList = new ArrayList<>();
411             AllottedResourceCustomization d1 = new AllottedResourceCustomization();
412             d1.setArModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
413             paramList.add(d1);
414             PowerMockito.when(dbMock.getAllAllottedResourcesByServiceModelInvariantUuid(Mockito.anyString(), Mockito.anyString())).thenReturn(paramList);
415             // end
416
417             // Run
418             ResteasyClient client = new ResteasyClientBuilder().build();
419             ResteasyWebTarget target = client.target("http://localhost:3099/v1/serviceAllottedResources?serviceModelInvariantUuid=0cb9b26a-9820-48a7-86e5-16c510e993d9&serviceModelVersion=ver1");
420             Response response = target.request().get();
421             String value = response.readEntity(String.class);
422
423             // System.out.println(value);
424
425             // prepare to inspect response
426             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
427             JsonObject respObj = reader.readObject();
428             reader.close();
429             JsonArray jArray = respObj.getJsonArray("serviceAllottedResources");
430             assertTrue(jArray.size() == 1);
431             if (jArray.size() == 1) {
432                 JsonObject rec = jArray.getJsonObject(0);
433                 String uuid = rec.getString("arModelUuid");
434
435                 assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
436             }
437             // end
438
439         } catch (Exception e) {
440             e.printStackTrace();
441             fail(e.getMessage());
442         }
443     }
444
445     @Test
446     public void vfModulesUrl_modelName_Test() {
447         try {
448             // set up mock return value
449             VfModule vfm = new VfModule();
450             vfm.setModelName("test Model");
451             vfm.setModelUUID("0cb9b26a-9820-48a7-86e5-16c510e993d9");
452
453             VfModuleCustomization ret = new VfModuleCustomization();
454             ret.setVfModule(vfm);
455             PowerMockito.when(dbMock.getVfModuleCustomizationByModelName(Mockito.anyString())).thenReturn(ret);
456             // end
457
458             // Run
459             ResteasyClient client = new ResteasyClientBuilder().build();
460             ResteasyWebTarget target = client.target("http://localhost:3099/v1/vfModules?vfModuleModelName=0cb9b26a-9820-48a7-86e5-16c510e993d9");
461             Response response = target.request().get();
462             String value = response.readEntity(String.class);
463
464             // System.out.println(value);
465
466             // prepare to inspect response
467             JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
468             JsonObject respObj = reader.readObject();
469             reader.close();
470             JsonObject jObj = respObj.getJsonObject("modelInfo");
471             String uuid = jObj.getString("modelUuid");
472             String name = jObj.getString("modelName");
473             assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
474             assertTrue(name.equals("test Model"));
475             // end
476
477         } catch (Exception e) {
478             e.printStackTrace();
479             fail(e.getMessage());
480         }
481     }
482
483     @AfterClass
484     public static void afterClass() throws Exception {
485         server.stop();
486     }
487 }