replace all fixed wiremock ports
[so.git] / bpmn / so-bpmn-infrastructure-common / src / test / groovy / org / onap / so / bpmn / infrastructure / scripts / DoCreateNetworkInstanceRollbackTest.groovy
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.scripts
22
23 import static org.mockito.Mockito.*
24
25 import org.camunda.bpm.engine.delegate.BpmnError
26 import org.camunda.bpm.engine.ProcessEngineServices
27 import org.camunda.bpm.engine.RepositoryService
28 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
29 import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
30 import org.camunda.bpm.engine.repository.ProcessDefinition
31 import org.camunda.bpm.engine.delegate.DelegateExecution;
32 import org.mockito.MockitoAnnotations
33 import org.mockito.runners.MockitoJUnitRunner
34 import org.mockito.internal.debugging.MockitoDebuggerImpl
35 import org.onap.so.bpmn.common.scripts.MsoUtils
36 import org.onap.so.bpmn.core.WorkflowException
37 import org.junit.Before
38 import org.junit.Rule;
39 import org.junit.Test
40 import org.junit.Ignore
41 import org.junit.runner.RunWith
42
43 import static org.onap.so.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterRestRollbackDelete;
44 import static org.junit.Assert.*;
45
46 import com.github.tomakehurst.wiremock.client.WireMock;
47 import com.github.tomakehurst.wiremock.junit.WireMockRule;
48
49 import java.util.HashMap;
50 import java.util.Map;
51 import java.util.UUID;
52 import org.apache.commons.lang3.*
53
54
55 @RunWith(MockitoJUnitRunner.class)
56 class DoCreateNetworkInstanceRollbackTest  {
57         
58         def utils = new MsoUtils()
59                 String Prefix="CRENWKIR_"
60
61
62                 String rollbackNetworkRequest =
63                 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
64    <rollback>
65       <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
66       <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
67       <networkStackId/>
68       <networkType>CONTRAIL_EXTERNAL</networkType>
69       <networkCreated>true</networkCreated>
70       <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
71       <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
72       <msoRequest>
73          <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
74          <serviceInstanceId/>
75       </msoRequest>
76    </rollback>
77 </NetworkAdapter:rollbackNetwork>"""                    
78                                                                 
79                                         String rollbackActivateSDNCRequest =
80                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
81                                   xmlns:ns5="http://org.onap/so/request/types/v1"
82                                   xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
83    <sdncadapter:RequestHeader>
84       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
85       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
86       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
87       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
88       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
89       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
90    </sdncadapter:RequestHeader>
91    <aetgt:SDNCRequestData>
92       <request-information>
93          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
94          <request-action>CreateNetworkInstance</request-action>
95          <source>VID</source>
96          <notification-url/>
97          <order-number/>
98          <order-version/>
99       </request-information>
100       <service-information>
101          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
102          <service-type>MSO-dev-service-type</service-type>
103          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
104          <subscriber-name>MSO_1610_dev</subscriber-name>
105       </service-information>
106       <network-information>
107          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
108          <network-type>CONTRAIL_EXTERNAL</network-type>
109          <onap-model-information>
110             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
111             <model-customization-uuid>customization-uuid</model-customization-uuid>
112             <model-uuid>uuid</model-uuid>
113             <model-version>version</model-version>
114             <model-name>CONTRAIL_EXTERNAL</model-name>
115          </onap-model-information>
116       </network-information>
117       <network-request-information>
118          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
119          <network-type>CONTRAIL_EXTERNAL</network-type>
120          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
121          <tenant>7dd5365547234ee8937416c65507d266</tenant>
122          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
123       </network-request-information>
124    </aetgt:SDNCRequestData>
125 </aetgt:SDNCAdapterWorkflowRequest>"""                  
126                 
127                                         String rollbackSDNCRequest =
128                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
129                                   xmlns:ns5="http://org.onap/so/request/types/v1"
130                                   xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
131    <sdncadapter:RequestHeader>
132       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
133       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
134       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
135       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
136       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
137       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
138    </sdncadapter:RequestHeader>
139    <aetgt:SDNCRequestData>
140       <request-information>
141          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
142          <request-action>CreateNetworkInstance</request-action>
143          <source>VID</source>
144          <notification-url/>
145          <order-number/>
146          <order-version/>
147       </request-information>
148       <service-information>
149          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
150          <service-type>MSO-dev-service-type</service-type>
151          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
152          <subscriber-name>MSO_1610_dev</subscriber-name>
153       </service-information>
154       <network-information>
155          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
156          <network-type>CONTRAIL_EXTERNAL</network-type>
157          <onap-model-information>
158             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
159             <model-customization-uuid>customization-uuid</model-customization-uuid>
160             <model-uuid>uuid</model-uuid>
161             <model-version>version</model-version>
162             <model-name>CONTRAIL_EXTERNAL</model-name>
163          </onap-model-information>
164       </network-information>
165       <network-request-information>
166          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
167          <network-type>CONTRAIL_EXTERNAL</network-type>
168          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
169          <tenant>7dd5365547234ee8937416c65507d266</tenant>
170          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
171       </network-request-information>
172    </aetgt:SDNCRequestData>
173 </aetgt:SDNCAdapterWorkflowRequest>"""                  
174                 
175 // - - - - - - - -
176
177
178             @Before
179                 public void init()
180                 {
181                         MockitoAnnotations.initMocks(this)
182                         
183                 }
184                 
185                 public void initializeVariables (DelegateExecution mockExecution) {
186
187                         verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
188                         
189                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
190                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
191                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
192         
193                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)
194                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
195                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
196                         
197                         verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCRequest", null)
198                         verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCResponse", "")
199                         verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
200         
201                         verify(mockExecution).setVariable(Prefix + "Success", false)
202                         verify(mockExecution).setVariable(Prefix + "fullRollback", false)
203                         verify(mockExecution).setVariable(Prefix + "networkId", "")
204                         verify(mockExecution).setVariable(Prefix + "urlRollbackPoNetwork", "")
205                         
206                 }
207                 
208                 @Test
209                 //@Ignore  
210                 public void preProcessRequest() {
211                         
212                         println "************ preProcessRequest ************* " 
213                         
214                         WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
215                         Map<String, String> rollbackData = new HashMap<String, String>();
216                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
217                         rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
218                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
219                                         
220                         ExecutionEntity mockExecution = setupMock()
221                         // Initialize prerequisite variables
222                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
223                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
224                         when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
225                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
226                         when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
227                                                 
228                         when(mockExecution.getVariable("mso.adapters.po.auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
229                         when(mockExecution.getVariable("mso.msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
230                         
231                         when(mockExecution.getVariable("mso.adapters.sdnc.endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")
232                         when(mockExecution.getVariable("mso.adapters.network.rest.endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
233                         when(mockExecution.getVariable("mso.adapters.sdnc.resource.endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")
234                         
235                         
236                         // preProcessRequest(DelegateExecution execution)                                               
237                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
238                         DoCreateNetworkInstanceRollback.preProcessRequest(mockExecution)
239                         
240 //                      verify(mockExecution).getVariable("isDebugLogEnabled")
241                         verify(mockExecution).setVariable("prefix", Prefix)
242                         
243                         //verify variable initialization
244                         initializeVariables(mockExecution)
245                                                                 
246                 }
247                 
248                 @Test
249                 //@Ignore
250                 public void callPONetworkAdapter() {
251
252                         MockNetworkAdapterRestRollbackDelete("deleteNetworkResponse_Success.xml","8abc633a-810b-4ca5-8b3a-09511d13a2ce");
253                         
254                         ExecutionEntity mockExecution = setupMock()
255                         // Initialize prerequisite variables
256                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
257                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
258                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn( rollbackNetworkRequest)
259                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)
260                         when(mockExecution.getVariable("mso.adapters.network.rest.endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
261                         
262                         // preProcessRequest(DelegateExecution execution)
263                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
264                         DoCreateNetworkInstanceRollback.callPONetworkAdapter(mockExecution)
265                         
266                         verify(mockExecution, atLeast(1)).setVariable(Prefix + "urlRollbackPoNetwork", "http://localhost:28090/networks/NetworkAdapter/8abc633a-810b-4ca5-8b3a-09511d13a2ce/rollback")
267                         
268                 }
269                 
270                 @Test
271                 //@Ignore
272                 public void validateRollbackResponses_Good() {
273                         
274                         WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")
275                         WorkflowException expectedWorkflowException = new WorkflowException("DoCreateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")
276                                   
277                         println "************ validateRollbackResponses_Good() ************* "
278                         ExecutionEntity mockExecution = setupMock()
279                         // Initialize prerequisite variables
280                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
281                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
282                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
283                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
284                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn("Good")
285                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
286                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
287                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
288                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
289                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")).thenReturn("200")
290                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCResponse")).thenReturn("GoodResponse")
291                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
292                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
293                                                                         
294                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
295                         DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
296                         
297                         // verify set prefix = Prefix + ""
298                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
299                         verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
300                         verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
301                         verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
302                         //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
303                 }
304                 
305                 @Test
306                 //@Ignore
307                 public void validateRollbackResponses_FullRollback() {
308                         
309                         Map<String, String> rollbackData = new HashMap<String, String>();
310                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
311                         rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
312                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
313                                   
314                         println "************ validateRollbackResponses_FullRollback() ************* "
315                         ExecutionEntity mockExecution = setupMock()
316                         // Initialize prerequisite variables
317                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
318                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
319                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
320                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
321                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn("Good")
322                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
323                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
324                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
325                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
326                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")).thenReturn("200")
327                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCResponse")).thenReturn("GoodResponse")
328                         when(mockExecution.getVariable(Prefix + "workflowException")).thenReturn(null)
329                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
330                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
331                                                                         
332                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
333                         DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
334                         
335                         // verify set prefix = Prefix + ""
336                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
337                         verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
338                         verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
339                         
340                 }
341                 
342                 
343                 private ExecutionEntity setupMock() {
344                         
345                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
346                         when(mockProcessDefinition.getKey()).thenReturn("DoCreateNetworkInstanceRollback")
347                         RepositoryService mockRepositoryService = mock(RepositoryService.class)
348                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
349                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoCreateNetworkInstanceRollback")
350                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
351                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
352                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
353                         
354                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)
355                         // Initialize prerequisite variables
356                         
357                         when(mockExecution.getId()).thenReturn("100")
358                         when(mockExecution.getProcessDefinitionId()).thenReturn("DoCreateNetworkInstanceRollback")
359                         when(mockExecution.getProcessInstanceId()).thenReturn("DoCreateNetworkInstanceRollback")
360                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
361                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
362                         
363                         return mockExecution
364                 }
365                 
366 }