1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DeleteNetworkInstanceTest.groovy
1 package org.openecomp.mso.bpmn.infrastructure.scripts\r
2 \r
3 import static org.mockito.Mockito.*\r
4 \r
5 import org.apache.commons.lang3.*\r
6 import org.camunda.bpm.engine.ProcessEngineServices\r
7 import org.camunda.bpm.engine.RepositoryService\r
8 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity\r
9 import org.camunda.bpm.engine.repository.ProcessDefinition\r
10 import org.camunda.bpm.engine.runtime.Execution\r
11 import org.junit.Before\r
12 import org.junit.Rule\r
13 import org.junit.Test\r
14 import org.junit.runner.RunWith\r
15 import org.mockito.MockitoAnnotations\r
16 import org.mockito.runners.MockitoJUnitRunner\r
17 import org.openecomp.mso.bpmn.common.scripts.MsoUtils\r
18 import org.openecomp.mso.bpmn.core.WorkflowException\r
19 \r
20 import com.github.tomakehurst.wiremock.junit.WireMockRule\r
21 \r
22 \r
23 @RunWith(MockitoJUnitRunner.class)\r
24 class DeleteNetworkInstanceTest  {\r
25 \r
26         @Rule\r
27         public WireMockRule wireMockRule = new WireMockRule(8090);\r
28         \r
29         String Prefix="DELNI_"\r
30         def utils = new MsoUtils()\r
31 \r
32         String falloutHandlerRequest = \r
33     """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
34                                                                      xmlns:ns="http://org.openecomp/mso/request/types/v1"\r
35                                                                      xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">\r
36                                            <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">\r
37                                               <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>\r
38                                               <action>DELETE</action>\r
39                                               <source>PORTAL</source>\r
40                                            </request-info>\r
41                                                 <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">\r
42    <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>\r
43    <aetgt:ErrorCode>5300</aetgt:ErrorCode>\r
44    <aetgt:SourceSystemErrorCode>200</aetgt:SourceSystemErrorCode>\r
45 </aetgt:WorkflowException>\r
46                                         </aetgt:FalloutHandlerRequest>"""\r
47 \r
48         String falloutHandlerRequestObj =\r
49         """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
50                                                                      xmlns:ns="http://org.openecomp/mso/request/types/v1"\r
51                                                                      xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">\r
52                                            <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">\r
53                                               <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>\r
54                                               <action>DELETE</action>\r
55                                               <source>PORTAL</source>\r
56                                            </request-info>\r
57                                                 <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">\r
58                                                         <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>\r
59                                                         <aetgt:ErrorCode>7000</aetgt:ErrorCode>\r
60                                                 </aetgt:WorkflowException>\r
61                                         </aetgt:FalloutHandlerRequest>"""\r
62                                         \r
63         String completeMsoProcessRequest = \r
64     """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
65                             xmlns:ns="http://org.openecomp/mso/request/types/v1"\r
66                             xmlns="http://org.openecomp/mso/infra/vnf-request/v1">\r
67    <request-info>\r
68       <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>\r
69       <action>DELETE</action>\r
70       <source>VID</source>\r
71    </request-info>\r
72    <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>\r
73    <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>\r
74 </aetgt:MsoCompletionRequest>"""\r
75 \r
76 String deleteDBRequest =\r
77 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"\r
78                   xmlns:ns="http://org.openecomp.mso/requestsdb">\r
79    <soapenv:Header/>\r
80    <soapenv:Body>\r
81       <ns:updateInfraRequest>\r
82          <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>\r
83          <lastModifiedBy>BPMN</lastModifiedBy>\r
84          <statusMessage>Network successfully deleted.</statusMessage>\r
85          <responseBody/>\r
86          <requestStatus>COMPLETED</requestStatus>\r
87          <progress>100</progress>\r
88          <vnfOutputs>&lt;network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/&gt;</vnfOutputs>\r
89       </ns:updateInfraRequest>\r
90    </soapenv:Body>\r
91 </soapenv:Envelope>"""  \r
92 \r
93 String deleteDBRequestErrorObj =\r
94 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">\r
95                                                 <soapenv:Header/>\r
96                                                 <soapenv:Body>\r
97                                                         <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">\r
98                                                                 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>\r
99                                                                 <lastModifiedBy>BPMN</lastModifiedBy>\r
100                                                                 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>\r
101                                                                 <responseBody></responseBody>\r
102                                                                 <requestStatus>FAILED</requestStatus>\r
103                                                                 <progress></progress>\r
104                                                                 <vnfOutputs>&lt;network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/&gt;</vnfOutputs>\r
105                                                         </ns:updateInfraRequest>\r
106                                                 </soapenv:Body>\r
107                                            </soapenv:Envelope>"""\r
108 \r
109 String deleteDBRequestErrorString =\r
110 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">\r
111                                                 <soapenv:Header/>\r
112                                                 <soapenv:Body>\r
113                                                         <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">\r
114                                                                 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>\r
115                                                                 <lastModifiedBy>BPMN</lastModifiedBy>\r
116                                                                 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>\r
117                                                                 <responseBody></responseBody>\r
118                                                                 <requestStatus>FAILED</requestStatus>\r
119                                                                 <progress></progress>\r
120                                                                 <vnfOutputs>&lt;network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/&gt;</vnfOutputs>\r
121                                                         </ns:updateInfraRequest>\r
122                                                 </soapenv:Body>\r
123                                            </soapenv:Envelope>"""\r
124                                            \r
125                                            String jsonIncomingRequest =\r
126                                            """{ "requestDetails": {\r
127               "modelInfo": {\r
128                         "modelType": "networkTyp",\r
129                         "modelId": "modelId",\r
130                         "modelNameVersionId": "modelNameVersionId",\r
131                         "modelName": "CONTRAIL_EXTERNAL",\r
132                         "modelVersion": "1"\r
133                   },\r
134                   "cloudConfiguration": {\r
135                         "lcpCloudRegionId": "RDM2WAGPLCP",\r
136                         "tenantId": "7dd5365547234ee8937416c65507d266"\r
137                   },\r
138                   "requestInfo": {\r
139                         "instanceName": "MNS-25180-L-01-dmz_direct_net_1",\r
140                         "source": "VID",\r
141                         "callbackUrl": "",\r
142             "suppressRollback": true,\r
143                 "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"\r
144                   },\r
145                   "relatedInstanceList": [ \r
146                         {  \r
147                         "relatedInstance": {\r
148                                 "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",\r
149                                 "modelInfo": {   \r
150                                         "modelType": "serviceT",\r
151                                         "modelId": "modelI",\r
152                                         "modelNameVersionId": "modelNameVersionI",\r
153                                         "modelName": "modleNam",\r
154                                         "modelVersion": "1"\r
155                                 }\r
156                         }\r
157                 }\r
158                   ],\r
159                   "requestParameters": {\r
160                         "userParams": [ \r
161                {\r
162                                  "name": "someUserParam1",\r
163                                  "value": "someValue1"\r
164                            }\r
165             ]\r
166                   }\r
167   }}""" \r
168                                            \r
169 // - - - - - - - -\r
170 \r
171 \r
172             @Before\r
173                 public void init()\r
174                 {\r
175                         MockitoAnnotations.initMocks(this)\r
176                 }\r
177                 \r
178                 @Test\r
179                 //@Ignore  \r
180                 public void preProcessRequest() {\r
181                         \r
182                         println "************ preProcessRequest_Payload ************* " \r
183                         ExecutionEntity mockExecution = setupMock()\r
184                         // Initialize prerequisite variables\r
185                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
186                         when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)\r
187                                                                         \r
188                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
189                         DeleteNetworkInstance.preProcessRequest(mockExecution)\r
190                         \r
191                         verify(mockExecution).getVariable("isDebugLogEnabled")\r
192                         verify(mockExecution).setVariable("prefix", Prefix)\r
193                         \r
194                         //verify variable initialization\r
195                         initializeVariables(mockExecution)\r
196 \r
197 \r
198                 }\r
199 \r
200                 public void initializeVariables (Execution mockExecution) {\r
201                         \r
202                         \r
203                         verify(mockExecution).setVariable(Prefix + "Success", false)\r
204                         \r
205                         verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")\r
206                         verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")\r
207                         verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)\r
208                 \r
209                 }\r
210                 \r
211                         \r
212                 @Test\r
213                 //@Ignore\r
214                 public void getNetworkModelInfo() {\r
215                         \r
216                         println "************ getNetworkModelInfo() ************* "\r
217                         \r
218                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
219                         // Initialize prerequisite variables\r
220                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
221                                                                         \r
222                         // preProcessRequest(Execution execution)\r
223                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
224                         DeleteNetworkInstance.getNetworkModelInfo(mockExecution)\r
225 \r
226                         verify(mockExecution).getVariable("isDebugLogEnabled")\r
227                         verify(mockExecution).setVariable("prefix", Prefix)\r
228                                                         \r
229                 }\r
230                         \r
231                 @Test\r
232                 //@Ignore\r
233                 public void sendSyncResponse() {\r
234                         \r
235                         println "************ sendSyncResponse ************* "\r
236                         \r
237                         ExecutionEntity mockExecution = setupMock()\r
238                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
239                         when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)\r
240                         when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")\r
241                         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")\r
242                         \r
243                         // preProcessRequest(Execution execution)\r
244                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
245                         DeleteNetworkInstance.sendSyncResponse(mockExecution)\r
246 \r
247                         verify(mockExecution).setVariable("prefix", Prefix)\r
248                         verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "202")\r
249                         \r
250                 }\r
251                 \r
252                 \r
253                 @Test\r
254                 //@Ignore\r
255                 public void sendSyncError() {\r
256                         \r
257                         println "************ sendSyncError ************* "\r
258                         \r
259                         ExecutionEntity mockExecution = setupMock()\r
260                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
261                         when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)\r
262                         when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")\r
263                         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")\r
264                         \r
265                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
266                         DeleteNetworkInstance.sendSyncError(mockExecution)\r
267 \r
268                         verify(mockExecution).setVariable("prefix", Prefix)\r
269                         verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "500")\r
270                         \r
271                 }\r
272                 \r
273 \r
274                 @Test\r
275                 //@Ignore\r
276                 public void prepareCompletion() {\r
277                         \r
278                         println "************ postProcessResponse ************* "\r
279                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
280                         // Initialize prerequisite variables\r
281                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
282                         when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")\r
283                         when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")\r
284                         \r
285                         // postProcessResponse(Execution execution)\r
286                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
287                         DeleteNetworkInstance.prepareCompletion(mockExecution)\r
288 \r
289                         // check the sequence of variable invocation\r
290                         //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()\r
291                         //preDebugger.printInvocations(mockExecution)\r
292 \r
293                         verify(mockExecution).getVariable("isDebugLogEnabled")\r
294                         verify(mockExecution).setVariable("prefix", Prefix)\r
295                         verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", completeMsoProcessRequest)\r
296                 \r
297                 }\r
298                 \r
299                 \r
300                 @Test\r
301                 //@Ignore\r
302                 public void prepareDBRequestError() {\r
303                         \r
304                         println "************ prepareDBRequestError ************* "\r
305                         \r
306                         WorkflowException sndcWorkflowExceptionObj = new WorkflowException("CreateNetworkV2", 500, "Received error from SDN-C: No availability zone available")\r
307                         \r
308                         ExecutionEntity mockExecution = setupMock()\r
309                         // Initialize prerequisite variables\r
310                         when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")\r
311                         when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)\r
312                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
313                         when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")\r
314                         when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")\r
315 \r
316                         // preProcessRequest(Execution execution)\r
317                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
318                         DeleteNetworkInstance.prepareDBRequestError(mockExecution)\r
319                         \r
320                         verify(mockExecution).setVariable("prefix", Prefix)\r
321                         verify(mockExecution).setVariable(Prefix + "deleteDBRequest", deleteDBRequestErrorObj)\r
322                 \r
323                 }\r
324                 \r
325         \r
326                 @Test\r
327                 //@Ignore\r
328                 public void postProcessResponse() {\r
329                         \r
330                         println "************ postProcessResponse ************* "\r
331                         ExecutionEntity mockExecution = setupMock()\r
332                         // Initialize prerequisite variables\r
333                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
334                         when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")\r
335                         \r
336                         // postProcessResponse(Execution execution)                                             \r
337                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
338                         DeleteNetworkInstance.postProcessResponse(mockExecution)\r
339 \r
340                         verify(mockExecution).setVariable("prefix", Prefix)\r
341                         verify(mockExecution).setVariable(Prefix + "Success", true)\r
342 \r
343                 \r
344                 }\r
345 \r
346                 \r
347                 @Test\r
348                 //@Ignore\r
349                 public void buildErrorResponse_FalloutHandlerRequest() {\r
350                         \r
351                         println "************ buildErrorResponse ************* "\r
352                         \r
353                         WorkflowException sndcWorkflowExceptionObj = new WorkflowException("DeleteNetworkInstance", 7000, "Received error from SDN-C: No availability zone available")\r
354                         \r
355                         ExecutionEntity mockExecution = setupMock()\r
356                         // Initialize prerequisite variables\r
357                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
358                         when(mockExecution.getVariable("mso-request-id")).thenReturn("b69c9054-da09-4a2c-adf5-51042b62bfac")\r
359                         when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)\r
360                         when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")\r
361                         \r
362                         // buildErrorResponse(Execution execution)\r
363                         DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()\r
364                         DeleteNetworkInstance.buildErrorResponse(mockExecution)\r
365                         \r
366                         verify(mockExecution).setVariable("prefix", Prefix)\r
367                         verify(mockExecution).setVariable(Prefix + "Success", false)\r
368                         verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequestObj)\r
369                         \r
370                 }\r
371         \r
372         \r
373                 private ExecutionEntity setupMock() {\r
374                 \r
375                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)\r
376                         when(mockProcessDefinition.getKey()).thenReturn("DeleteNetworkInstance")\r
377                         RepositoryService mockRepositoryService = mock(RepositoryService.class)\r
378                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)\r
379                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DeleteNetworkInstance")\r
380                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")\r
381                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)\r
382                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)\r
383                         \r
384                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
385                         // Initialize prerequisite variables\r
386                         \r
387                         when(mockExecution.getId()).thenReturn("100")\r
388                         when(mockExecution.getProcessDefinitionId()).thenReturn("DeleteNetworkInstance")\r
389                         when(mockExecution.getProcessInstanceId()).thenReturn("DeleteNetworkInstance")\r
390                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)\r
391                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)\r
392 \r
393                         return mockExecution\r
394                         \r
395                 }\r
396                 \r
397 }