Merge "Reorder modifiers"
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoDeleteNetworkInstanceRollbackTest.groovy
1 package org.openecomp.mso.bpmn.infrastructure.scripts
2
3 import static org.mockito.Mockito.*
4
5 import org.camunda.bpm.engine.delegate.BpmnError
6 import org.camunda.bpm.engine.ProcessEngineServices
7 import org.camunda.bpm.engine.RepositoryService
8 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
9 import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
10 import org.camunda.bpm.engine.repository.ProcessDefinition
11 import org.camunda.bpm.engine.delegate.DelegateExecution;
12 import org.mockito.MockitoAnnotations
13 import org.mockito.runners.MockitoJUnitRunner
14 import org.mockito.internal.debugging.MockitoDebuggerImpl
15 import org.openecomp.mso.bpmn.common.scripts.MsoUtils
16 import org.openecomp.mso.bpmn.core.WorkflowException
17 import org.junit.Before
18 import org.junit.Rule;
19 import org.junit.Test
20 import org.junit.Ignore
21 import org.junit.runner.RunWith
22
23 import static org.junit.Assert.*;
24
25 import com.github.tomakehurst.wiremock.client.WireMock;
26 import com.github.tomakehurst.wiremock.junit.WireMockRule;
27
28 import java.util.HashMap;
29 import java.util.Map;
30 import java.util.UUID;
31
32 import org.apache.commons.lang3.*
33
34
35 @RunWith(MockitoJUnitRunner.class)
36 class DoDeleteNetworkInstanceRollbackTest  {
37         
38         @Rule
39         public WireMockRule wireMockRule = new WireMockRule(8090);
40         
41                 def utils = new MsoUtils()
42                 String Prefix="DELNWKIR_"
43
44
45                 String rollbackNetworkRequest =
46                 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
47    <rollback>
48       <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
49       <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
50       <networkStackId/>
51       <networkType>CONTRAIL_EXTERNAL</networkType>
52       <networkCreated>true</networkCreated>
53       <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
54       <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
55       <msoRequest>
56          <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
57          <serviceInstanceId/>
58       </msoRequest>
59    </rollback>
60 </NetworkAdapter:rollbackNetwork>"""                    
61                                                                 
62                                         String rollbackDeActivateSDNCRequest =
63                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
64                                   xmlns:ns5="http://org.openecomp/mso/request/types/v1"
65                                   xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
66    <sdncadapter:RequestHeader>
67       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
68       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
69       <sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
70       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
71       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
72       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
73    </sdncadapter:RequestHeader>
74    <aetgt:SDNCRequestData>
75       <request-information>
76          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
77          <request-action>CreateNetworkInstance</request-action>
78          <source>VID</source>
79          <notification-url/>
80          <order-number/>
81          <order-version/>
82       </request-information>
83       <service-information>
84          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
85          <service-type>MSO-dev-service-type</service-type>
86          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
87          <subscriber-name>MSO_1610_dev</subscriber-name>
88       </service-information>
89       <network-information>
90          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
91          <network-type>CONTRAIL_EXTERNAL</network-type>
92          <onap-model-information>
93             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
94             <model-customization-uuid>customization-uuid</model-customization-uuid>
95             <model-uuid>uuid</model-uuid>
96             <model-version>version</model-version>
97             <model-name>CONTRAIL_EXTERNAL</model-name>
98          </onap-model-information>
99       </network-information>
100       <network-request-information>
101          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
102          <network-type>CONTRAIL_EXTERNAL</network-type>
103          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
104          <tenant>7dd5365547234ee8937416c65507d266</tenant>
105          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
106       </network-request-information>
107    </aetgt:SDNCRequestData>
108 </aetgt:SDNCAdapterWorkflowRequest>"""                  
109                 
110                                         String rollbackSDNCRequest =
111                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
112                                   xmlns:ns5="http://org.openecomp/mso/request/types/v1"
113                                   xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
114    <sdncadapter:RequestHeader>
115       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
116       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
117       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
118       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
119       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
120    </sdncadapter:RequestHeader>
121    <aetgt:SDNCRequestData>
122       <request-information>
123          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
124          <request-action>CreateNetworkInstance</request-action>
125          <source>VID</source>
126          <notification-url/>
127          <order-number/>
128          <order-version/>
129       </request-information>
130       <service-information>
131          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
132          <service-type>MSO-dev-service-type</service-type>
133          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
134          <subscriber-name>MSO_1610_dev</subscriber-name>
135       </service-information>
136       <network-information>
137          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
138          <network-type>CONTRAIL_EXTERNAL</network-type>
139          <onap-model-information>
140             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
141             <model-customization-uuid>customization-uuid</model-customization-uuid>
142             <model-uuid>uuid</model-uuid>
143             <model-version>version</model-version>
144             <model-name>CONTRAIL_EXTERNAL</model-name>
145          </onap-model-information>
146       </network-information>
147       <network-request-information>
148          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
149          <network-type>CONTRAIL_EXTERNAL</network-type>
150          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
151          <tenant>7dd5365547234ee8937416c65507d266</tenant>
152          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
153       </network-request-information>
154    </aetgt:SDNCRequestData>
155 </aetgt:SDNCAdapterWorkflowRequest>"""                  
156                 
157 // - - - - - - - -
158
159
160             @Before
161                 public void init()
162                 {
163                         MockitoAnnotations.initMocks(this)
164                         
165                 }
166                 
167                 public void initializeVariables (DelegateExecution mockExecution) {
168
169                         verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
170                 
171                         verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", null)
172                         verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCResponse", "")
173                         verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "")
174         
175                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
176                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
177                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
178                                         
179                         verify(mockExecution).setVariable(Prefix + "Success", false)
180                         verify(mockExecution).setVariable(Prefix + "fullRollback", false)
181                         
182                 }
183                 
184                 @Test
185                 //@Ignore  
186                 public void preProcessRequest() {
187                         
188                         println "************ preProcessRequest ************* " 
189                         
190                         WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
191                         Map<String, String> rollbackData = new HashMap<String, String>();
192                         rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
193                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
194                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
195                                         
196                         ExecutionEntity mockExecution = setupMock()
197                         // Initialize prerequisite variables
198                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
199                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
200                         when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
201                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
202                         when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
203                         
204                         when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
205                         when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
206                         
207                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
208                         when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
209                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
210                         
211                         
212                         // preProcessRequest(DelegateExecution execution)                                               
213                         DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
214                         DoDeleteNetworkInstanceRollback.preProcessRequest(mockExecution)
215
216                         //verify variable initialization
217                         initializeVariables(mockExecution)
218                         
219                         verify(mockExecution).getVariable("isDebugLogEnabled")
220                         verify(mockExecution).setVariable("prefix", Prefix)
221                                                                 
222                 }
223                 
224
225                 @Test
226                 //@Ignore
227                 public void validateRollbackResponses_Good() {
228                         
229                         WorkflowException workflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")
230                         WorkflowException expectedWorkflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC deactivate rollback completed. + PO Network rollback completed. + SNDC unassign rollback completed.")
231                                   
232                         println "************ validateRollbackResponses_Good() ************* "
233                         ExecutionEntity mockExecution = setupMock()
234                         // Initialize prerequisite variables
235                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
236                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
237
238                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
239                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
240                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
241                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
242                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
243                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
244                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
245                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
246                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
247                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
248                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
249                                                                         
250                         DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
251                         DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
252                         
253                         // verify set prefix = Prefix + ""
254                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
255                         verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
256                         verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
257                         verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
258                         //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
259                 }
260                 
261                 @Test
262                 //@Ignore
263                 public void validateRollbackResponses_FullRollback() {
264                         
265                         Map<String, String> rollbackData = new HashMap<String, String>();
266                         rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
267                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
268                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
269                                   
270                         println "************ validateRollbackResponses_FullRollback() ************* "
271                         ExecutionEntity mockExecution = setupMock()
272                         // Initialize prerequisite variables
273                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
274                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
275
276                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
277                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
278                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
279                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
280                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
281                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
282                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
283                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
284                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
285                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
286                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
287                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
288                                                                         
289                         DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
290                         DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
291                         
292                         // verify set prefix = Prefix + ""
293                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
294                         verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
295                         verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
296                         
297                 }
298                 
299                 
300                 private ExecutionEntity setupMock() {
301                         
302                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
303                         when(mockProcessDefinition.getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
304                         RepositoryService mockRepositoryService = mock(RepositoryService.class)
305                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
306                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
307                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
308                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
309                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
310                         
311                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)
312                         // Initialize prerequisite variables
313                         
314                         when(mockExecution.getId()).thenReturn("100")
315                         when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteNetworkInstanceRollback")
316                         when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteNetworkInstanceRollback")
317                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
318                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
319                         
320                         return mockExecution
321                 }
322                 
323 }