0b7617f00f70c5b126c227509329289cfc16cdc6
[so.git] /
1 package org.openecomp.mso.bpmn.infrastructure.scripts\r
2 \r
3 import org.camunda.bpm.engine.ProcessEngineServices\r
4 import org.camunda.bpm.engine.RepositoryService\r
5 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity\r
6 import org.camunda.bpm.engine.repository.ProcessDefinition\r
7 import org.camunda.bpm.engine.runtime.Execution\r
8 import org.junit.Before\r
9 import org.junit.Rule\r
10 import org.junit.Test\r
11 import org.mockito.MockitoAnnotations\r
12 import org.openecomp.mso.bpmn.common.scripts.MsoUtils\r
13 import org.openecomp.mso.bpmn.core.WorkflowException\r
14 import org.openecomp.mso.bpmn.core.json.JsonUtils\r
15 import org.openecomp.mso.bpmn.common.scripts.VidUtils\r
16 \r
17 import static org.junit.Assert.*;\r
18 import static org.mockito.Mockito.*\r
19 \r
20 import com.github.tomakehurst.wiremock.junit.WireMockRule\r
21 \r
22 class CreateGenericAlaCarteServiceInstanceTest  {\r
23         \r
24         @Rule\r
25         public WireMockRule wireMockRule = new WireMockRule(8090);\r
26         \r
27                 String Prefix="CRENI_"\r
28                 def utils = new MsoUtils()\r
29                 JsonUtils jsonUtil = new JsonUtils()\r
30                 VidUtils vidUtils = new VidUtils()\r
31                 \r
32         String createDBRequestError =\r
33 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">\r
34                                                 <soapenv:Header/>\r
35                                                 <soapenv:Body>\r
36                                                         <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">\r
37                                                                 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>\r
38                                                                 <lastModifiedBy>BPMN</lastModifiedBy>\r
39                                                                 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>\r
40                                                                 <responseBody></responseBody>\r
41                                                                 <requestStatus>FAILED</requestStatus>\r
42                                                                 <vnfOutputs>&lt;network-id&gt;&lt;/network-id&gt;&lt;network-name&gt;&lt;/network-names&gt;</vnfOutputs>\r
43                                                         </ns:updateInfraRequest>\r
44                                                 </soapenv:Body>\r
45                                            </soapenv:Envelope>"""\r
46 \r
47           String falloutHandlerRequest =\r
48                                            """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
49                                                                      xmlns:ns="http://org.openecomp/mso/request/types/v1"\r
50                                                                      xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">\r
51                                            <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">\r
52                                               <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>\r
53                                               <action>CREATE</action>\r
54                                               <source>VID</source>\r
55                                            </request-info>\r
56                                                 <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">\r
57                                                         <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available.</aetgt:ErrorMessage>\r
58                                                         <aetgt:ErrorCode>5300</aetgt:ErrorCode>\r
59                                                 </aetgt:WorkflowException>\r
60                                         </aetgt:FalloutHandlerRequest>"""\r
61                                         \r
62                 String completeMsoProcessRequest =\r
63                                            """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
64                             xmlns:ns="http://org.openecomp/mso/request/types/v1"\r
65                             xmlns="http://org.openecomp/mso/infra/vnf-request/v1">\r
66    <request-info>\r
67       <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>\r
68       <action>CREATE</action>\r
69       <source>VID</source>\r
70    </request-info>\r
71    <aetgt:status-message>Network has been created successfully.</aetgt:status-message>\r
72    <aetgt:mso-bpel-name>BPMN Network action: CREATE</aetgt:mso-bpel-name>\r
73 </aetgt:MsoCompletionRequest>"""\r
74 \r
75                 String jsonIncomingRequest =\r
76         """{\r
77         "service": {\r
78     "name": "so_test4",\r
79     "description": "so_test2",\r
80     "serviceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561519",\r
81     "templateId": "592f9437-a9c0-4303-b9f6-c445bb7e9814",\r
82     "parameters": {\r
83       "globalSubscriberId": "123457",\r
84       "subscriberName": "Customer1",\r
85       "serviceType": "voLTE",\r
86       "templateName": "voLTE Service:1.0",\r
87       "resources": [\r
88         {\r
89           "resourceName": "vIMS",\r
90           "resourceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561516",\r
91           "resourceId": "60c3e96e-0970-4871-b6e0-3b6de7561512",\r
92           "nsParameters": {\r
93             "locationConstraints": [\r
94               {\r
95                 "vnfProfileId": "zte-vBAS-1.0",\r
96                 "locationConstraints": {\r
97                   "vimId": "4050083f-465f-4838-af1e-47a545222ad0"\r
98                 }\r
99               },\r
100               {\r
101                 "vnfProfileId": "zte-vMME-1.0",\r
102                 "locationConstraints": {\r
103                   "vimId": "4050083f-465f-4838-af1e-47a545222ad0"\r
104                 }\r
105               }\r
106             ],\r
107             "additionalParamForNs": {}\r
108           }\r
109         },\r
110         {\r
111           "resourceName": "vEPC",\r
112           "resourceDefId": "61c3e96e-0970-4871-b6e0-3b6de7561516",\r
113           "resourceId": "62c3e96e-0970-4871-b6e0-3b6de7561512",\r
114           "nsParameters": {\r
115             "locationConstraints": [\r
116               {\r
117                 "vnfProfileId": "zte-CSCF-1.0",\r
118                 "locationConstraints": {\r
119                   "vimId": "4050083f-465f-4838-af1e-47a545222ad1"\r
120                 }\r
121               }\r
122             ],\r
123             "additionalParamForNs": {}\r
124           }\r
125         },\r
126         {\r
127           "resourceName": "underlayvpn",\r
128           "resourceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561513",\r
129           "resourceId": "60c3e96e-0970-4871-b6e0-3b6de7561514",\r
130           "nsParameters": {\r
131             "locationConstraints": [],\r
132             "additionalParamForNs": {\r
133               "externalDataNetworkName": "Flow_out_net",\r
134               "m6000_mng_ip": "181.18.20.2",\r
135               "externalCompanyFtpDataNetworkName": "Flow_out_net",\r
136               "externalPluginManageNetworkName": "plugin_net_2014",\r
137               "externalManageNetworkName": "mng_net_2017",\r
138               "sfc_data_network": "sfc_data_net_2016",\r
139               "NatIpRange": "210.1.1.10-210.1.1.20",\r
140               "location": "4050083f-465f-4838-af1e-47a545222ad0",\r
141               "sdncontroller": "9b9f02c0-298b-458a-bc9c-be3692e4f35e"\r
142             }\r
143           }\r
144         },\r
145         {\r
146           "resourceName": "overlayvpn",\r
147           "resourceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561517",\r
148           "resourceId": "60c3e96e-0970-4871-b6e0-3b6de7561518",\r
149           "nsParameters": {\r
150             "locationConstraints": [],\r
151             "additionalParamForNs": {\r
152               "externalDataNetworkName": "Flow_out_net",\r
153               "m6000_mng_ip": "181.18.20.2",\r
154               "externalCompanyFtpDataNetworkName": "Flow_out_net",\r
155               "externalPluginManageNetworkName": "plugin_net_2014",\r
156               "externalManageNetworkName": "mng_net_2017",\r
157               "sfc_data_network": "sfc_data_net_2016",\r
158               "NatIpRange": "210.1.1.10-210.1.1.20",\r
159               "location": "4050083f-465f-4838-af1e-47a545222ad0",\r
160               "sdncontroller": "9b9f02c0-298b-458a-bc9c-be3692e4f35e"\r
161             }\r
162           }\r
163         }\r
164       ]\r
165     }\r
166   }\r
167 }"""\r
168 \r
169             @Before\r
170                 public void init()\r
171                 {\r
172                         MockitoAnnotations.initMocks(this)\r
173                         \r
174                 }\r
175 \r
176                 public void initializeVariables(Execution mockExecution) {\r
177                         \r
178                         verify(mockExecution).setVariable(Prefix + "Success", false)\r
179                         \r
180                         verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")\r
181                         verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")\r
182                         verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)\r
183                                 \r
184                 }\r
185                                 \r
186                 @Test\r
187                 //@Ignore  \r
188                 public void preProcessRequest() {\r
189                         \r
190                         println "************ preProcessRequest() ************* " \r
191                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
192                         // Initialize prerequisite variables\r
193                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
194                         when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)\r
195                         try{\r
196                                                                         \r
197                                 // preProcessRequest(Execution execution)                                               \r
198                                 CreateGenericALaCarteServiceInstance createGenericALaCarteServiceInstance = new CreateGenericALaCarteServiceInstance()\r
199                                 createGenericALaCarteServiceInstance.preProcessRequest(mockExecution)\r
200 \r
201                                 verify(mockExecution).getVariable("isDebugLogEnabled")\r
202                                 verify(mockExecution).setVariable("prefix", Prefix)\r
203                         \r
204                                 initializeVariables(mockExecution)\r
205                                 //verify(mockExecution).setVariable(Prefix + "Success", false)\r
206                         }catch(Exception e){\r
207                                 //ignore\r
208                         }                       \r
209                 }\r
210                 \r
211                 @Test\r
212                 //@Ignore\r
213                 public void sendSyncResponse() {\r
214                         \r
215                         println "************ sendSyncResponse ************* "\r
216                         \r
217                         ExecutionEntity mockExecution = setupMock()\r
218                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
219                         when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)\r
220                         when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")\r
221                         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")\r
222                         try{\r
223                                 // preProcessRequest(Execution execution)\r
224                                 CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()\r
225                                 CreateNetworkInstance.sendSyncResponse(mockExecution)\r
226 \r
227                                 verify(mockExecution).setVariable("prefix", Prefix)\r
228                                 verify(mockExecution).setVariable("CreateNetworkInstanceResponseCode", "202")\r
229                         }catch(Exception e){\r
230                                 //ignore\r
231                         }\r
232                 }\r
233                         \r
234                 private ExecutionEntity setupMock() {\r
235                         \r
236                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)\r
237                         when(mockProcessDefinition.getKey()).thenReturn("CreateNetworkInstance")\r
238                         RepositoryService mockRepositoryService = mock(RepositoryService.class)\r
239                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)\r
240                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("CreateNetworkInstance")\r
241                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")\r
242                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)\r
243                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)\r
244                         \r
245                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
246                         // Initialize prerequisite variables\r
247                         \r
248                         when(mockExecution.getId()).thenReturn("100")\r
249                         when(mockExecution.getProcessDefinitionId()).thenReturn("CreateNetworkInstance")\r
250                         when(mockExecution.getProcessInstanceId()).thenReturn("CreateNetworkInstance")\r
251                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)\r
252                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)\r
253                         \r
254                         return mockExecution\r
255                 }\r
256 }\r