Merge "Reorder modifiers"
[so.git] / adapters / mso-catalog-db-adapter / src / test / java / org / openecomp / mso / adapters / catalogdb / CatalogDbAdapterRestHttpTest.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 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 import static org.junit.Assert.*;
33
34 import java.io.StringReader;
35 import java.util.ArrayList;
36 import java.util.List;
37
38 import org.jboss.resteasy.spi.Registry;
39 import org.jboss.resteasy.spi.ResteasyProviderFactory;
40 import org.junit.AfterClass;
41 import org.junit.Before;
42 import org.junit.BeforeClass;
43 import org.junit.Test;
44 import org.junit.runner.RunWith;
45 import org.mockito.Mock;
46 import org.mockito.Mockito;
47 import org.mockito.runners.MockitoJUnitRunner;
48 import org.openecomp.mso.adapters.catalogdb.CatalogDbAdapterRest;
49 import org.openecomp.mso.db.catalog.CatalogDatabase;
50 import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
51 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
52 import org.openecomp.mso.db.catalog.beans.ServiceMacroHolder;
53 import org.openecomp.mso.db.catalog.beans.VfModule;
54 import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
55 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
56 import org.powermock.api.mockito.PowerMockito;
57 import org.powermock.core.classloader.annotations.PowerMockIgnore;
58 import org.powermock.core.classloader.annotations.PrepareForTest;
59 import org.apache.http.HttpStatus;
60 import org.jboss.resteasy.client.jaxrs.ResteasyClient;
61 import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
62 import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
63 import org.powermock.modules.junit4.PowerMockRunner;
64
65
66 @RunWith(PowerMockRunner.class)
67 @PrepareForTest({CatalogDatabase.class})
68 @PowerMockIgnore("javax.net.ssl.*")
69 public class CatalogDbAdapterRestHttpTest {
70     @Mock
71     private static CatalogDatabase dbMock;
72     private static TJWSEmbeddedJaxrsServer server;
73     private static final int PORT = 3099;
74     private static Registry registry;
75     private static ResteasyProviderFactory factory;
76     
77     @BeforeClass
78     public static void beforeClass() throws Exception {
79         server = new TJWSEmbeddedJaxrsServer();
80         server.setPort(PORT);
81         server.start();
82         registry = server.getDeployment().getRegistry();
83         factory = server.getDeployment().getDispatcher().getProviderFactory();
84         registry.addPerRequestResource(CatalogDbAdapterRest.class);
85         factory.registerProvider(CatalogDbAdapterRest.class);
86     }
87     
88     @Before
89     public void before(){
90                 PowerMockito.mockStatic(CatalogDatabase.class);
91                 dbMock = PowerMockito.mock(CatalogDatabase.class);
92                 PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(dbMock);
93                 
94                 try {
95                         PowerMockito.whenNew(CatalogDatabase.class).withAnyArguments().thenReturn(dbMock);
96
97                 } catch (Exception e) {
98                         e.printStackTrace();
99                 }
100     }
101     
102     @Test
103     public void healthCheck_Test(){
104         ResteasyClient client = new ResteasyClientBuilder().build();
105         ResteasyWebTarget target = client.target("http://localhost:3099/v1/healthcheck");
106         Response response = target.request().get();
107         String value = response.readEntity(String.class);
108         assertTrue(value.contains("Application v1 ready"));
109     }
110     
111     @Test
112     public void vnfResourcesUrl_Test()
113     {
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     {
367         try {
368             List<AllottedResourceCustomization> paramList;              
369                 // set up mock return value
370             paramList = new ArrayList<>();
371             AllottedResourceCustomization d1 = new AllottedResourceCustomization();
372             d1.setArModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
373             paramList.add(d1);
374                 PowerMockito.when(dbMock.getAllAllottedResourcesByArModelCustomizationUuid(Mockito.anyString())).thenReturn (paramList);
375             // end
376                         
377                 // Run
378                 ResteasyClient client = new ResteasyClientBuilder().build();
379                 ResteasyWebTarget target = client.target("http://localhost:3099/v1/allottedResources/0cb9b26a-9820-48a7-86e5-16c510e993d9");
380                 Response response = target.request().get();
381                 String value = response.readEntity(String.class);
382                 
383                 // System.out.println(value);
384                 
385                 // prepare to inspect response
386                 JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
387                 JsonObject respObj = reader.readObject();
388                 reader.close();
389                 JsonArray jArray = respObj.getJsonArray("serviceAllottedResources");
390                 assertTrue(jArray.size() == 1);
391                 if(jArray.size() == 1){
392                         JsonObject rec = jArray.getJsonObject(0);
393                         String uuid = rec.getString("arModelUuid");
394                         
395                         assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
396                 }
397                 // end
398                 
399                 } catch (Exception e) {
400                         e.printStackTrace();
401                         fail(e.getMessage());
402                 }       
403         
404     }
405     
406     @Test
407     public void serviceAllottedResourcesUrl_smiUuid_Test()
408     {
409         try {
410             List<AllottedResourceCustomization> paramList;              
411                 // set up mock return value
412             paramList = new ArrayList<>();
413             AllottedResourceCustomization d1 = new AllottedResourceCustomization();
414             d1.setArModelUuid("0cb9b26a-9820-48a7-86e5-16c510e993d9");
415             paramList.add(d1);
416                 PowerMockito.when(dbMock.getAllAllottedResourcesByServiceModelInvariantUuid(Mockito.anyString(), Mockito.anyString())).thenReturn (paramList);
417             // end
418                         
419                 // Run
420                 ResteasyClient client = new ResteasyClientBuilder().build();
421                 ResteasyWebTarget target = client.target("http://localhost:3099/v1/serviceAllottedResources?serviceModelInvariantUuid=0cb9b26a-9820-48a7-86e5-16c510e993d9&serviceModelVersion=ver1");
422                 Response response = target.request().get();
423                 String value = response.readEntity(String.class);
424                 
425                 // System.out.println(value);
426                 
427                 // prepare to inspect response
428                 JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
429                 JsonObject respObj = reader.readObject();
430                 reader.close();
431                 JsonArray jArray = respObj.getJsonArray("serviceAllottedResources");
432                 assertTrue(jArray.size() == 1);
433                 if(jArray.size() == 1){
434                         JsonObject rec = jArray.getJsonObject(0);
435                         String uuid = rec.getString("arModelUuid");
436                         
437                         assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
438                 }
439                 // end
440                 
441                 } catch (Exception e) {
442                         e.printStackTrace();
443                         fail(e.getMessage());
444                 }       
445     }
446
447     @Test
448     public void vfModulesUrl_modelName_Test()
449     {
450         try {
451                 // set up mock return value
452                 VfModule vfm = new VfModule();
453                 vfm.setModelName("test Model");
454                 vfm.setModelUUID("0cb9b26a-9820-48a7-86e5-16c510e993d9");
455                 
456                 VfModuleCustomization ret = new VfModuleCustomization();                
457                 ret.setVfModule(vfm);
458                 PowerMockito.when(dbMock.getVfModuleCustomizationByModelName(Mockito.anyString())).thenReturn (ret);
459             // end
460                         
461                 // Run
462                 ResteasyClient client = new ResteasyClientBuilder().build();
463                 ResteasyWebTarget target = client.target("http://localhost:3099/v1/vfModules?vfModuleModelName=0cb9b26a-9820-48a7-86e5-16c510e993d9");
464                 Response response = target.request().get();
465                 String value = response.readEntity(String.class);
466                 
467                 // System.out.println(value);
468                 
469                 // prepare to inspect response
470                 JsonReader reader = Json.createReader(new StringReader(value.replaceAll("\r?\n", "")));
471                 JsonObject respObj = reader.readObject();
472                 reader.close();
473                 JsonObject jObj = respObj.getJsonObject("modelInfo");
474                 String uuid = jObj.getString("modelUuid");
475                 String name = jObj.getString("modelName");
476                 assertTrue(uuid.equals("0cb9b26a-9820-48a7-86e5-16c510e993d9"));
477                 assertTrue(name.equals("test Model"));
478                 // end
479                 
480                 } catch (Exception e) {
481                         e.printStackTrace();
482                         fail(e.getMessage());
483                 }       
484     }    
485     
486     @AfterClass
487     public static void afterClass() throws Exception {
488         server.stop();
489     }
490 }