c0f6ccc730c048ceba1f301ec50faf77ac6b1c26
[so.git] /
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.openecomp.mso.apihandlerinfra;\r
22 \r
23 import static org.junit.Assert.assertNotNull;\r
24 import static org.junit.Assert.assertTrue;\r
25 \r
26 import java.io.ByteArrayInputStream;\r
27 import java.io.IOException;\r
28 import java.io.InputStream;\r
29 import java.sql.Timestamp;\r
30 import java.util.ArrayList;\r
31 import java.util.Collections;\r
32 import java.util.List;\r
33 \r
34 import javax.ws.rs.core.Response;\r
35 \r
36 import org.apache.http.HttpResponse;\r
37 import org.apache.http.ProtocolVersion;\r
38 import org.apache.http.client.ClientProtocolException;\r
39 import org.apache.http.entity.BasicHttpEntity;\r
40 import org.apache.http.message.BasicHttpResponse;\r
41 import org.hibernate.HibernateException;\r
42 import org.hibernate.Session;\r
43 import org.hibernate.criterion.Criterion;\r
44 import org.hibernate.criterion.Order;\r
45 import org.hibernate.internal.SessionFactoryImpl;\r
46 import org.junit.BeforeClass;\r
47 import org.junit.Test;\r
48 import org.junit.Ignore;\r
49 import org.mockito.Mockito;\r
50 import org.openecomp.mso.apihandler.common.CamundaClient;\r
51 import org.openecomp.mso.apihandler.common.RequestClient;\r
52 import org.openecomp.mso.apihandler.common.RequestClientFactory;\r
53 import org.openecomp.mso.db.catalog.CatalogDatabase;\r
54 import org.openecomp.mso.db.catalog.beans.Service;\r
55 import org.openecomp.mso.db.catalog.beans.ServiceRecipe;\r
56 import org.openecomp.mso.properties.MsoDatabaseException;\r
57 import org.openecomp.mso.properties.MsoJavaProperties;\r
58 import org.openecomp.mso.properties.MsoPropertiesFactory;\r
59 import org.openecomp.mso.requestsdb.InfraActiveRequests;\r
60 import org.openecomp.mso.requestsdb.OperationStatus;\r
61 import org.openecomp.mso.requestsdb.RequestsDatabase;\r
62 \r
63 import mockit.Mock;\r
64 import mockit.MockUp;\r
65 \r
66 public class E2EServiceInstancesTest {\r
67 \r
68         String jsonBody = "{" +\r
69                         "\"service\": {" +\r
70                         "\"name\": \"so_test4\"," +\r
71                         "\"description\": \"so_test2\"," +\r
72                         "\"serviceInvariantUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561519\"," +\r
73                         "\"serviceUuid\": \"592f9437-a9c0-4303-b9f6-c445bb7e9814\"," +\r
74                         "\"globalSubscriberId\": \"123457\"," +\r
75                         "\"serviceType\": \"voLTE\"," +\r
76                         "\"parameters\": {" +\r
77                         "\"resources\": [" +\r
78                         "{" +\r
79                         "\"resourceName\": \"vIMS\"," +\r
80                         "\"resourceInvariantUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561516\"," +\r
81                         "\"resourceUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561512\"," +\r
82                         "\"parameters\": {" +\r
83                         "\"locationConstraints\": [" +\r
84                         "{" +\r
85                         "\"vnfProfileId\": \"zte-vBAS-1.0\"," +\r
86                         "\"locationConstraints\": {" +\r
87                         "\"vimId\": \"4050083f-465f-4838-af1e-47a545222ad0\"" +\r
88                         "}" +\r
89                         "}," +\r
90                         "{" +\r
91                         "\"vnfProfileId\": \"zte-vMME-1.0\"," +\r
92                         "\"locationConstraints\": {" +\r
93                         "\"vimId\": \"4050083f-465f-4838-af1e-47a545222ad0\"" +\r
94                         "}" +\r
95                         "}" +\r
96                         "]" +\r
97                         "}" +\r
98                         "}," +\r
99                         "{" +\r
100                         "\"resourceName\": \"vEPC\"," +\r
101                         "\"resourceInvariantUuid\": \"61c3e96e-0970-4871-b6e0-3b6de7561516\"," +\r
102                         "\"resourceUuid\": \"62c3e96e-0970-4871-b6e0-3b6de7561512\"," +\r
103                         "\"parameters\": {" +\r
104                         "\"locationConstraints\": [" +\r
105                         "{" +\r
106                         "\"vnfProfileId\": \"zte-CSCF-1.0\"," +\r
107                         "\"locationConstraints\": {" +\r
108                         "\"vimId\": \"4050083f-465f-4838-af1e-47a545222ad1\"" +\r
109                         "}" +\r
110                         "}" +\r
111                         "]" +\r
112                         "}" +\r
113                         "}," +\r
114                         "{" +\r
115                         "\"resourceName\": \"underlayvpn\"," +\r
116                         "\"resourceInvariantUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561513\"," +\r
117                         "\"resourceUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561514\"," +\r
118                         "\"parameters\": {" +\r
119                         "\"locationConstraints\": []" +\r
120                         "}" +\r
121                         "}," +\r
122                         "{" +\r
123                         "\"resourceName\": \"overlayvpn\"," +\r
124                         "\"resourceInvariantUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561517\"," +\r
125                         "\"resourceUuid\": \"60c3e96e-0970-4871-b6e0-3b6de7561518\"," +\r
126                         "\"parameters\": {" +\r
127                         "\"locationConstraints\": []" +\r
128                         "}" +\r
129                         "}" +\r
130                         "]," +\r
131                         "\"requestInputs\": {" +\r
132                         "\"externalDataNetworkName\": \"Flow_out_net\"," +\r
133                         "\"m6000_mng_ip\": \"181.18.20.2\"," +\r
134                         "\"externalCompanyFtpDataNetworkName\": \"Flow_out_net\"," +\r
135                         "\"externalPluginManageNetworkName\": \"plugin_net_2014\"," +\r
136                         "\"externalManageNetworkName\": \"mng_net_2017\"," +\r
137                         "\"sfc_data_network\": \"sfc_data_net_2016\"," +\r
138                         "\"NatIpRange\": \"210.1.1.10-210.1.1.20\"," +\r
139                         "\"location\": \"4050083f-465f-4838-af1e-47a545222ad0\"," +\r
140                         "\"sdncontroller\": \"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"" +\r
141                         "}" +\r
142                         "}" +\r
143                         "}" +\r
144                         "}";\r
145 \r
146     private final String compareModelsRequest = "{" +\r
147             "\"globalSubscriberId\": \"60c3e96e-0970-4871-b6e0-3b6de7561519\"," +\r
148             "\"serviceType\": \"vnf\"," +\r
149             "\"modelInvariantIdTarget\": \"60c3e96e-0970-4871-b6e0-3b6de1234567\"," +\r
150             "\"modelVersionIdTarget\": \"modelVersionIdTarget\"" +\r
151             "}";\r
152 \r
153     @BeforeClass\r
154     public static void setUp() throws Exception {\r
155 \r
156         MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();\r
157         msoPropertiesFactory.removeAllMsoProperties();\r
158         msoPropertiesFactory.initializeMsoProperties(Constants.MSO_PROP_APIHANDLER_INFRA, "src/test/resources/mso.apihandler-infra.properties");\r
159     }\r
160 \r
161         @Test\r
162         public void createE2EServiceInstanceTestSuccess() {\r
163                 new MockUp<RequestsDatabase>() {\r
164                         @Mock\r
165                         public OperationStatus getOperationStatusByServiceName(\r
166                                         String serviceName) {\r
167                                 OperationStatus operationStatus = new OperationStatus();\r
168                                 return operationStatus;\r
169                         }\r
170                 };\r
171                 new MockUp<E2EServiceInstances>() {\r
172                         @Mock\r
173                         private void createOperationStatusRecordForError(Action action,\r
174                                         String requestId) throws MsoDatabaseException {\r
175 \r
176                         }\r
177                 };\r
178                 new MockUp<CatalogDatabase>() {\r
179                         @Mock\r
180                         public Service getServiceByModelName(String modelName) {\r
181                                 Service svc = new Service();\r
182                                 return svc;\r
183                         }\r
184                 };\r
185 \r
186                 new MockUp<CatalogDatabase>() {\r
187                         @Mock\r
188                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
189                                         String action) {\r
190                                 ServiceRecipe rec = new ServiceRecipe();\r
191                                 return rec;\r
192                         }\r
193                 };\r
194 \r
195                 new MockUp<RequestClientFactory>() {\r
196                         @Mock\r
197                         public RequestClient getRequestClient(String orchestrationURI,\r
198                                         MsoJavaProperties props) throws IllegalStateException {\r
199                                 RequestClient client = new CamundaClient();\r
200                                 client.setUrl("/test/url");\r
201                                 return client;\r
202                         }\r
203                 };\r
204 \r
205                 new MockUp<CamundaClient>() {\r
206                         @Mock\r
207                         public HttpResponse post(String requestId, boolean isBaseVfModule,\r
208                                         int recipeTimeout, String requestAction,\r
209                                         String serviceInstanceId, String vnfId, String vfModuleId,\r
210                                         String volumeGroupId, String networkId, String configurationId, String serviceType,\r
211                                         String vnfType, String vfModuleType, String networkType,\r
212                                         String requestDetails, String recipeParamXsd) {\r
213                                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
214                                 HttpResponse resp = new BasicHttpResponse(pv, 202,\r
215                                                 "test response");\r
216                                 BasicHttpEntity entity = new BasicHttpEntity();\r
217                                 String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
218                                 InputStream instream = new ByteArrayInputStream(body.getBytes());\r
219                                 entity.setContent(instream);\r
220                                 resp.setEntity(entity);\r
221                                 return resp;\r
222                         }\r
223                 };\r
224 \r
225                 E2EServiceInstances instance = new E2EServiceInstances();\r
226                 String request = jsonBody;\r
227                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
228                 String respStr = resp.getEntity().toString();\r
229                 assertTrue(respStr.contains("SVC2000"));\r
230         }\r
231 \r
232         @Test\r
233         public void createE2EServiceInstanceTestBpelHTTPException() {\r
234                 new MockUp<RequestsDatabase>() {\r
235                         @Mock\r
236                         public OperationStatus getOperationStatusByServiceName(\r
237                                         String serviceName) {\r
238                                 OperationStatus operationStatus = new OperationStatus();\r
239                                 return operationStatus;\r
240                         }\r
241                 };\r
242                 new MockUp<E2EServiceInstances>() {\r
243                         @Mock\r
244                         private void createOperationStatusRecordForError(Action action,\r
245                                         String requestId) throws MsoDatabaseException {\r
246 \r
247                         }\r
248                 };\r
249                 new MockUp<CatalogDatabase>() {\r
250                         @Mock\r
251                         public Service getServiceByModelName(String modelName) {\r
252                                 Service svc = new Service();\r
253                                 return svc;\r
254                         }\r
255                 };\r
256 \r
257                 new MockUp<CatalogDatabase>() {\r
258                         @Mock\r
259                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
260                                         String action) {\r
261                                 ServiceRecipe rec = new ServiceRecipe();\r
262                                 return rec;\r
263                         }\r
264                 };\r
265 \r
266                 new MockUp<RequestClientFactory>() {\r
267                         @Mock\r
268                         public RequestClient getRequestClient(String orchestrationURI,\r
269                                         MsoJavaProperties props) throws IllegalStateException {\r
270                                 RequestClient client = new CamundaClient();\r
271                                 client.setUrl("/test/url");\r
272                                 return client;\r
273                         }\r
274                 };\r
275 \r
276                 new MockUp<CamundaClient>() {\r
277                         @Mock\r
278                         public HttpResponse post(String requestId, boolean isBaseVfModule,\r
279                                         int recipeTimeout, String requestAction,\r
280                                         String serviceInstanceId, String vnfId, String vfModuleId,\r
281                                         String volumeGroupId, String networkId, String configurationId, String serviceType,\r
282                                         String vnfType, String vfModuleType, String networkType,\r
283                                         String requestDetails, String recipeParamXsd) {\r
284                                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
285                                 HttpResponse resp = new BasicHttpResponse(pv, 500,\r
286                                                 "test response");\r
287                                 BasicHttpEntity entity = new BasicHttpEntity();\r
288                                 String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
289                                 InputStream instream = new ByteArrayInputStream(body.getBytes());\r
290                                 entity.setContent(instream);\r
291                                 resp.setEntity(entity);\r
292                                 return resp;\r
293                         }\r
294                 };\r
295 \r
296                 E2EServiceInstances instance = new E2EServiceInstances();\r
297                 String request = jsonBody;\r
298                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
299                 String respStr = resp.getEntity().toString();\r
300                 assertTrue(respStr.contains("SVC2000"));\r
301         }\r
302 \r
303         @Test\r
304         public void createE2EServiceInstanceTestBpelHTTPExceptionWithNullREsponseBody() {\r
305                 new MockUp<RequestsDatabase>() {\r
306                         @Mock\r
307                         public OperationStatus getOperationStatusByServiceName(\r
308                                         String serviceName) {\r
309                                 OperationStatus operationStatus = new OperationStatus();\r
310                                 return operationStatus;\r
311                         }\r
312                 };\r
313                 new MockUp<E2EServiceInstances>() {\r
314                         @Mock\r
315                         private void createOperationStatusRecordForError(Action action,\r
316                                         String requestId) throws MsoDatabaseException {\r
317 \r
318                         }\r
319                 };\r
320                 new MockUp<CatalogDatabase>() {\r
321                         @Mock\r
322                         public Service getServiceByModelName(String modelName) {\r
323                                 Service svc = new Service();\r
324                                 return svc;\r
325                         }\r
326                 };\r
327 \r
328                 new MockUp<CatalogDatabase>() {\r
329                         @Mock\r
330                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
331                                         String action) {\r
332                                 ServiceRecipe rec = new ServiceRecipe();\r
333                                 return rec;\r
334                         }\r
335                 };\r
336 \r
337                 new MockUp<RequestClientFactory>() {\r
338                         @Mock\r
339                         public RequestClient getRequestClient(String orchestrationURI,\r
340                                         MsoJavaProperties props) throws IllegalStateException {\r
341                                 RequestClient client = new CamundaClient();\r
342                                 client.setUrl("/test/url");\r
343                                 return client;\r
344                         }\r
345                 };\r
346 \r
347                 new MockUp<CamundaClient>() {\r
348                         @Mock\r
349                         public HttpResponse post(String requestId, boolean isBaseVfModule,\r
350                                         int recipeTimeout, String requestAction,\r
351                                         String serviceInstanceId, String vnfId, String vfModuleId,\r
352                                         String volumeGroupId, String networkId, String configurationId, String serviceType,\r
353                                         String vnfType, String vfModuleType, String networkType,\r
354                                         String requestDetails, String recipeParamXsd) {\r
355                                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
356                                 HttpResponse resp = new BasicHttpResponse(pv, 500,\r
357                                                 "test response");\r
358                                 BasicHttpEntity entity = new BasicHttpEntity();\r
359                                 String body = "{\"response\":\"\",\"message\":\"success\"}";\r
360                                 InputStream instream = new ByteArrayInputStream(body.getBytes());\r
361                                 entity.setContent(instream);\r
362                                 resp.setEntity(entity);\r
363                                 return resp;\r
364                         }\r
365                 };\r
366 \r
367                 E2EServiceInstances instance = new E2EServiceInstances();\r
368                 String request = jsonBody;\r
369                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
370                 String respStr = resp.getEntity().toString();\r
371                 assertTrue(respStr.contains("SVC2000"));\r
372         }\r
373 \r
374         @Test\r
375         public void createE2EServiceInstanceTestNullBPELResponse() {\r
376                 new MockUp<RequestsDatabase>() {\r
377                         @Mock\r
378                         public OperationStatus getOperationStatusByServiceName(\r
379                                         String serviceName) {\r
380                                 OperationStatus operationStatus = new OperationStatus();\r
381                                 return operationStatus;\r
382                         }\r
383                 };\r
384                 new MockUp<E2EServiceInstances>() {\r
385                         @Mock\r
386                         private void createOperationStatusRecordForError(Action action,\r
387                                         String requestId) throws MsoDatabaseException {\r
388 \r
389                         }\r
390                 };\r
391                 new MockUp<CatalogDatabase>() {\r
392                         @Mock\r
393                         public Service getServiceByModelName(String modelName) {\r
394                                 Service svc = new Service();\r
395                                 return svc;\r
396                         }\r
397                 };\r
398 \r
399                 new MockUp<CatalogDatabase>() {\r
400                         @Mock\r
401                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
402                                         String action) {\r
403                                 ServiceRecipe rec = new ServiceRecipe();\r
404                                 return rec;\r
405                         }\r
406                 };\r
407 \r
408                 new MockUp<RequestClientFactory>() {\r
409                         @Mock\r
410                         public RequestClient getRequestClient(String orchestrationURI,\r
411                                         MsoJavaProperties props) throws IllegalStateException {\r
412                                 RequestClient client = new CamundaClient();\r
413                                 client.setUrl("/test/url");\r
414                                 return client;\r
415                         }\r
416                 };\r
417 \r
418                 new MockUp<CamundaClient>() {\r
419                         @Mock\r
420                         public HttpResponse post(String requestId, boolean isBaseVfModule,\r
421                                         int recipeTimeout, String requestAction,\r
422                                         String serviceInstanceId, String vnfId, String vfModuleId,\r
423                                         String volumeGroupId, String networkId, String configurationId, String serviceType,\r
424                                         String vnfType, String vfModuleType, String networkType,\r
425                                         String requestDetails, String recipeParamXsd) {\r
426                                 HttpResponse resp = null;\r
427                                 return resp;\r
428                         }\r
429                 };\r
430 \r
431                 E2EServiceInstances instance = new E2EServiceInstances();\r
432                 String request = jsonBody;\r
433                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
434                 String respStr = resp.getEntity().toString();\r
435                 assertTrue(respStr.contains("SVC2000"));\r
436         }\r
437 \r
438         @Test\r
439         public void createE2EServiceInstanceTestBPMNNullREsponse() {\r
440                 new MockUp<RequestsDatabase>() {\r
441                         @Mock\r
442                         public OperationStatus getOperationStatusByServiceName(\r
443                                         String serviceName) {\r
444                                 OperationStatus operationStatus = new OperationStatus();\r
445                                 return operationStatus;\r
446                         }\r
447                 };\r
448                 new MockUp<E2EServiceInstances>() {\r
449                         @Mock\r
450                         private void createOperationStatusRecordForError(Action action,\r
451                                         String requestId) throws MsoDatabaseException {\r
452 \r
453                         }\r
454                 };\r
455                 new MockUp<CatalogDatabase>() {\r
456                         @Mock\r
457                         public Service getServiceByModelName(String modelName) {\r
458                                 Service svc = new Service();\r
459                                 return svc;\r
460                         }\r
461                 };\r
462 \r
463                 new MockUp<CatalogDatabase>() {\r
464                         @Mock\r
465                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
466                                         String action) {\r
467                                 ServiceRecipe rec = new ServiceRecipe();\r
468                                 return rec;\r
469                         }\r
470                 };\r
471 \r
472                 new MockUp<RequestClientFactory>() {\r
473                         @Mock\r
474                         public RequestClient getRequestClient(String orchestrationURI,\r
475                                         MsoJavaProperties props) throws IllegalStateException {\r
476                                 RequestClient client = new CamundaClient();\r
477                                 client.setUrl("/test/url");\r
478                                 return client;\r
479                         }\r
480                 };\r
481 \r
482                 new MockUp<CamundaClient>() {\r
483                         @Mock\r
484                         public HttpResponse post(String camundaReqXML, String requestId,\r
485                                         String requestTimeout, String schemaVersion,\r
486                                         String serviceInstanceId, String action) {\r
487                                 HttpResponse resp = null;\r
488                                 return resp;\r
489                         }\r
490                 };\r
491                 E2EServiceInstances instance = new E2EServiceInstances();\r
492                 String request = jsonBody;\r
493                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
494                 String respStr = resp.getEntity().toString();\r
495                 assertTrue(respStr.contains("SVC2000"));\r
496         }\r
497 \r
498         @Test\r
499         public void createE2EServiceInstanceTestNullBpmn() {\r
500                 new MockUp<RequestsDatabase>() {\r
501                         @Mock\r
502                         public OperationStatus getOperationStatusByServiceName(\r
503                                         String serviceName) {\r
504                                 OperationStatus operationStatus = new OperationStatus();\r
505                                 return operationStatus;\r
506                         }\r
507                 };\r
508 \r
509                 new MockUp<E2EServiceInstances>() {\r
510                         @Mock\r
511                         private void createOperationStatusRecordForError(Action action,\r
512                                         String requestId) throws MsoDatabaseException {\r
513 \r
514                         }\r
515                 };\r
516                 new MockUp<CatalogDatabase>() {\r
517                         @Mock\r
518                         public Service getServiceByModelName(String modelName) {\r
519                                 Service svc = new Service();\r
520                                 return svc;\r
521                         }\r
522                 };\r
523 \r
524                 new MockUp<CatalogDatabase>() {\r
525                         @Mock\r
526                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
527                                         String action) {\r
528                                 ServiceRecipe rec = new ServiceRecipe();\r
529                                 return rec;\r
530                         }\r
531                 };\r
532                 E2EServiceInstances instance = new E2EServiceInstances();\r
533                 String request = jsonBody;;\r
534                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
535                 String respStr = resp.getEntity().toString();\r
536                 assertTrue(respStr.contains("SVC2000"));\r
537         }\r
538 \r
539         @Test\r
540         public void createE2EServiceInstanceTestNullReceipe() {\r
541                 new MockUp<RequestsDatabase>() {\r
542                         @Mock\r
543                         public OperationStatus getOperationStatusByServiceName(\r
544                                         String serviceName) {\r
545                                 OperationStatus operationStatus = new OperationStatus();\r
546                                 return operationStatus;\r
547                         }\r
548                 };\r
549                 new MockUp<E2EServiceInstances>() {\r
550                         @Mock\r
551                         private void createOperationStatusRecordForError(Action action,\r
552                                         String requestId) throws MsoDatabaseException {\r
553 \r
554                         }\r
555                 };\r
556 \r
557                 E2EServiceInstances instance = new E2EServiceInstances();\r
558                 String request = jsonBody;\r
559                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
560                 String respStr = resp.getEntity().toString();\r
561                 assertTrue(respStr.contains("SVC2000"));\r
562         }\r
563 \r
564         @Test\r
565         public void createE2EServiceInstanceTestNullDBResponse() {\r
566 \r
567                 new MockUp<RequestsDatabase>() {\r
568                         @Mock\r
569                         public OperationStatus getOperationStatusByServiceName(\r
570                                         String serviceName) {\r
571                                 OperationStatus operationStatus = new OperationStatus();\r
572                                 return operationStatus;\r
573                         }\r
574                 };\r
575                 new MockUp<E2EServiceInstances>() {\r
576                         @Mock\r
577                         private void createOperationStatusRecordForError(Action action,\r
578                                         String requestId) throws MsoDatabaseException {\r
579 \r
580                         }\r
581                 };\r
582 \r
583                 E2EServiceInstances instance = new E2EServiceInstances();\r
584                 String request = jsonBody;\r
585                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
586                 String respStr = resp.getEntity().toString();\r
587                 assertTrue(respStr.contains("SVC2000"));\r
588         }\r
589 \r
590         @Test\r
591         public void createE2EServiceInstanceTestInvalidRequest() {\r
592                 new MockUp<RequestsDatabase>() {\r
593                         @Mock\r
594                         public OperationStatus getOperationStatusByServiceName(\r
595                                         String serviceName) {\r
596                                 OperationStatus operationStatus = new OperationStatus();\r
597                                 return operationStatus;\r
598                         }\r
599                 };\r
600 \r
601                 new MockUp<E2EServiceInstances>() {\r
602                         @Mock\r
603                         private void createOperationStatusRecordForError(Action action,\r
604                                         String requestId) throws MsoDatabaseException {\r
605 \r
606                         }\r
607                 };\r
608                 E2EServiceInstances instance = new E2EServiceInstances();\r
609                 String request = jsonBody;\r
610                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
611                 String respStr = resp.getEntity().toString();\r
612                 assertTrue(respStr.contains("SVC2000"));\r
613         }\r
614 \r
615         @Test\r
616         public void createE2EServiceInstanceTestEmptyDBQuery() {\r
617                 new MockUp<E2EServiceInstances>() {\r
618                         @Mock\r
619                         private void createOperationStatusRecordForError(Action action,\r
620                                         String requestId) throws MsoDatabaseException {\r
621 \r
622                         }\r
623                 };\r
624 \r
625                 E2EServiceInstances instance = new E2EServiceInstances();\r
626                 String request = jsonBody;\r
627                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
628                 String respStr = resp.getEntity().toString();\r
629                 assertTrue(respStr.contains("SVC2000"));\r
630                 // assertTrue(true);\r
631         }\r
632 \r
633         @Test\r
634         public void createE2EServiceInstanceTestDBQueryFail() {\r
635                 new MockUp<RequestsDatabase>() {\r
636                         @Mock\r
637                         public OperationStatus getOperationStatusByServiceName(\r
638                                         String serviceName) {\r
639                                 OperationStatus operationStatus = new OperationStatus();\r
640                                 return operationStatus;\r
641                         }\r
642                 };\r
643 \r
644                 new MockUp<E2EServiceInstances>() {\r
645                         @Mock\r
646                         private void createOperationStatusRecordForError(Action action,\r
647                                         String requestId) throws MsoDatabaseException {\r
648 \r
649                         }\r
650                 };\r
651                 E2EServiceInstances instance = new E2EServiceInstances();\r
652                 String request = jsonBody;\r
653                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
654                 String respStr = resp.getEntity().toString();\r
655                 assertTrue(respStr.contains("SVC2000"));\r
656         }\r
657 \r
658         @Test\r
659         public void createE2EServiceInstanceTestForEmptyRequest() {\r
660 \r
661                 new MockUp<E2EServiceInstances>() {\r
662                         @Mock\r
663                         private void createOperationStatusRecordForError(Action action,\r
664                                         String requestId) throws MsoDatabaseException {\r
665 \r
666                         }\r
667                 };\r
668                 E2EServiceInstances instance = new E2EServiceInstances();\r
669                 String request = "";\r
670                 Response resp = instance.createE2EServiceInstance(request, "v3");\r
671                 String respStr = resp.getEntity().toString();\r
672                 assertTrue(respStr\r
673             .contains("Mapping of request to JSON object failed.  No content to map due to end-of-input"));\r
674         }\r
675 \r
676         @Ignore // 1802 merge\r
677         @Test\r
678         public void deleteE2EServiceInstanceTestNormal() {\r
679                 E2EServiceInstances instance = new E2EServiceInstances();\r
680                 String request = "{\"globalSubscriberId\":\"299392392\",\"serviceType\":\"VoLTE\"}";\r
681                 Response resp = instance.deleteE2EServiceInstance(request, "v3",\r
682                                 "12345678");\r
683                 String respStr = resp.getEntity().toString();\r
684                 assertTrue(respStr.contains("SVC1000"));\r
685         }\r
686 \r
687         @Test\r
688         public void getE2EServiceInstanceTest() {\r
689 \r
690                 new MockUp<RequestsDatabase>() {\r
691                         @Mock\r
692                         public OperationStatus getOperationStatus(String serviceId,\r
693                                         String operationId) {\r
694                                 OperationStatus os = new OperationStatus();\r
695                                 os.setOperation("");\r
696                                 os.setOperationContent("");\r
697                                 os.setOperationId("123456");\r
698                                 os.setProgress("");\r
699                                 os.setServiceId("12345");\r
700                                 os.setServiceName("VoLTE");\r
701                                 os.setReason("");\r
702                                 os.setResult("");\r
703                                 os.setUserId("");\r
704                                 return os;\r
705                         }\r
706                 };\r
707 \r
708                 E2EServiceInstances instance = new E2EServiceInstances();\r
709                 Response resp = instance\r
710                                 .getE2EServiceInstances("12345", "v3", "123456");\r
711 \r
712         }\r
713         \r
714         @Test\r
715         public void updateE2EServiceInstanceTestNormal() {\r
716                 new MockUp<RequestsDatabase>() {\r
717                         @Mock\r
718                         public OperationStatus getOperationStatusByServiceId(\r
719                                         String serviceID) {\r
720                                 OperationStatus operationStatus = new OperationStatus();\r
721                                 operationStatus.setProgress("100");\r
722                                 operationStatus.setResult("finish");\r
723                                 return operationStatus;\r
724                         }\r
725                 };\r
726                 new MockUp<E2EServiceInstances>() {\r
727                         @Mock\r
728                         private void createOperationStatusRecordForError(Action action,\r
729                                         String requestId) throws MsoDatabaseException {\r
730 \r
731                         }\r
732                 };\r
733                 new MockUp<CatalogDatabase>() {\r
734                         @Mock\r
735                         public Service getServiceByModelName(String modelName) {\r
736                                 Service svc = new Service();\r
737                                 return svc;\r
738                         }\r
739                 };\r
740 \r
741                 new MockUp<CatalogDatabase>() {\r
742                         @Mock\r
743                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
744                                         String action) {\r
745                                 ServiceRecipe rec = new ServiceRecipe();\r
746                                 return rec;\r
747                         }\r
748                 };\r
749 \r
750                 new MockUp<RequestClientFactory>() {\r
751                         @Mock\r
752                         public RequestClient getRequestClient(String orchestrationURI,\r
753                                         MsoJavaProperties props) throws IllegalStateException {\r
754                                 RequestClient client = new CamundaClient();\r
755                                 client.setUrl("/test/url");\r
756                                 return client;\r
757                         }\r
758                 };\r
759 \r
760                 new MockUp<CamundaClient>() {\r
761                         @Mock\r
762                         public HttpResponse post(String requestId, boolean isBaseVfModule,\r
763                                         int recipeTimeout, String requestAction,\r
764                                         String serviceInstanceId, String vnfId, String vfModuleId,\r
765                                         String volumeGroupId, String networkId, String configurationId, String serviceType,\r
766                                         String vnfType, String vfModuleType, String networkType,\r
767                                         String requestDetails, String recipeParamXsd) {\r
768                                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
769                                 HttpResponse resp = new BasicHttpResponse(pv, 202,\r
770                                                 "test response");\r
771                                 BasicHttpEntity entity = new BasicHttpEntity();\r
772                                 String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
773                                 InputStream instream = new ByteArrayInputStream(body.getBytes());\r
774                                 entity.setContent(instream);\r
775                                 resp.setEntity(entity);\r
776                                 return resp;\r
777                         }\r
778                 };\r
779 \r
780                 E2EServiceInstances instance = new E2EServiceInstances();\r
781                 String request = jsonBody;\r
782                 Response resp = instance.updateE2EServiceInstance(request, "v3", "12345");\r
783                 String respStr = resp.getEntity().toString();\r
784                 assertTrue(respStr.contains("success"));\r
785         }\r
786         \r
787         @Test\r
788         public void updateE2EServiceInstanceTestChkStatusFalse() {\r
789                 new MockUp<RequestsDatabase>() {\r
790                         @Mock\r
791                         public OperationStatus getOperationStatusByServiceId(\r
792                                         String serviceID) {\r
793                                 OperationStatus operationStatus = new OperationStatus();\r
794                                 operationStatus.setResult("processing");\r
795                                 return operationStatus;\r
796                         }\r
797                 };\r
798                 new MockUp<E2EServiceInstances>() {\r
799                         @Mock\r
800                         private void createOperationStatusRecordForError(Action action,\r
801                                         String requestId) throws MsoDatabaseException {\r
802 \r
803                         }\r
804                 };\r
805                 new MockUp<CatalogDatabase>() {\r
806                         @Mock\r
807                         public Service getServiceByModelName(String modelName) {\r
808                                 Service svc = new Service();\r
809                                 return svc;\r
810                         }\r
811                 };\r
812 \r
813                 new MockUp<CatalogDatabase>() {\r
814                         @Mock\r
815                         public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
816                                         String action) {\r
817                                 ServiceRecipe rec = new ServiceRecipe();\r
818                                 return rec;\r
819                         }\r
820                 };\r
821 \r
822                 new MockUp<RequestClientFactory>() {\r
823                         @Mock\r
824                         public RequestClient getRequestClient(String orchestrationURI,\r
825                                         MsoJavaProperties props) throws IllegalStateException {\r
826                                 RequestClient client = new CamundaClient();\r
827                                 client.setUrl("/test/url");\r
828                                 return client;\r
829                         }\r
830                 };\r
831 \r
832                 new MockUp<CamundaClient>() {\r
833                         @Mock\r
834                         public HttpResponse post(String requestId, boolean isBaseVfModule,\r
835                                         int recipeTimeout, String requestAction,\r
836                                         String serviceInstanceId, String vnfId, String vfModuleId,\r
837                                         String volumeGroupId, String networkId, String configurationId, String serviceType,\r
838                                         String vnfType, String vfModuleType, String networkType,\r
839                                         String requestDetails, String recipeParamXsd) {\r
840                                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
841                                 HttpResponse resp = new BasicHttpResponse(pv, 202,\r
842                                                 "test response");\r
843                                 BasicHttpEntity entity = new BasicHttpEntity();\r
844                                 String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
845                                 InputStream instream = new ByteArrayInputStream(body.getBytes());\r
846                                 entity.setContent(instream);\r
847                                 resp.setEntity(entity);\r
848                                 return resp;\r
849                         }\r
850                 };\r
851 \r
852                 E2EServiceInstances instance = new E2EServiceInstances();\r
853                 String request = jsonBody;\r
854                 Response resp = instance.updateE2EServiceInstance(request, "v3", "12345");\r
855                 String respStr = resp.getEntity().toString();\r
856                 assertTrue(respStr.contains("SVC2000"));\r
857         }\r
858 \r
859     @Test\r
860     public void compareModelwithTargetVersionBadRequest(){\r
861 \r
862         E2EServiceInstances instance = new E2EServiceInstances();\r
863         Response response = instance.compareModelwithTargetVersion("", "12345", "v3");\r
864 \r
865         assertNotNull(response);\r
866         assertTrue(response.getEntity().toString().contains("Mapping of request to JSON object failed."));\r
867 \r
868     }\r
869     @Test\r
870     public void compareModelwithTargetVersionFailedBPMNCall(){\r
871 \r
872         new MockUp<CamundaClient>() {\r
873             @Mock\r
874             public HttpResponse post(String requestId, boolean isBaseVfModule,\r
875                  int recipeTimeout, String requestAction, String serviceInstanceId,\r
876                  String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,\r
877                  String serviceType, String vnfType, String vfModuleType, String networkType,\r
878                  String requestDetails, String recipeParamXsd)\r
879                     throws ClientProtocolException, IOException {\r
880 \r
881                 throw new ClientProtocolException();\r
882             }\r
883         };\r
884 \r
885         E2EServiceInstances instance = new E2EServiceInstances();\r
886         Response response = instance.compareModelwithTargetVersion(compareModelsRequest, "12345", "v3");\r
887 \r
888         assertNotNull(response);\r
889         assertTrue(response.getEntity().toString().contains("Failed calling bpmn"));\r
890 \r
891     }\r
892 \r
893     @Test\r
894     public void compareModelwithTargetVersionSuccess(){\r
895 \r
896         new MockUp<CamundaClient>() {\r
897             @Mock\r
898             public HttpResponse post(String requestId, boolean isBaseVfModule,\r
899                                      int recipeTimeout, String requestAction, String serviceInstanceId,\r
900                                      String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,\r
901                                      String serviceType, String vnfType, String vfModuleType, String networkType,\r
902                                      String requestDetails, String recipeParamXsd)\r
903                     throws ClientProtocolException, IOException {\r
904 \r
905                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
906                 HttpResponse resp = new BasicHttpResponse(pv, 202,\r
907                         "compareModelwithTargetVersion, test response");\r
908                 BasicHttpEntity entity = new BasicHttpEntity();\r
909                 String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
910                 InputStream instream = new ByteArrayInputStream(body.getBytes());\r
911                 entity.setContent(instream);\r
912                 resp.setEntity(entity);\r
913 \r
914                 return resp;\r
915             }\r
916         };\r
917 \r
918         E2EServiceInstances instance = new E2EServiceInstances();\r
919         Response response = instance.compareModelwithTargetVersion(compareModelsRequest, "12345", "v3");\r
920 \r
921         assertNotNull(response);\r
922         assertTrue(response.getStatus()==202);\r
923 \r
924     }\r
925 }\r