AT&T 1712 and 1802 release code
[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.delegate.DelegateExecution\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 (DelegateExecution 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(DelegateExecution 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(DelegateExecution 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(DelegateExecution 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(DelegateExecution 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(DelegateExecution 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(DelegateExecution 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 }