1 package org.openecomp.mso.bpmn.infrastructure.scripts
\r
3 import org.camunda.bpm.engine.ProcessEngineServices
\r
4 import org.camunda.bpm.engine.RepositoryService
\r
5 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
\r
6 import org.camunda.bpm.engine.repository.ProcessDefinition
\r
7 import org.camunda.bpm.engine.runtime.Execution
\r
8 import org.junit.Before
\r
9 import org.junit.Rule
\r
10 import org.junit.Test
\r
11 import org.mockito.MockitoAnnotations
\r
12 import org.openecomp.mso.bpmn.common.scripts.MsoUtils
\r
13 import org.openecomp.mso.bpmn.core.WorkflowException
\r
14 import org.openecomp.mso.bpmn.core.json.JsonUtils
\r
15 import org.openecomp.mso.bpmn.common.scripts.VidUtils
\r
17 import static org.junit.Assert.*;
\r
18 import static org.mockito.Mockito.*
\r
20 import com.github.tomakehurst.wiremock.junit.WireMockRule
\r
22 class CreateGenericAlaCarteServiceInstanceTest {
\r
25 public WireMockRule wireMockRule = new WireMockRule(8090);
\r
27 String Prefix="CRENI_"
\r
28 def utils = new MsoUtils()
\r
29 JsonUtils jsonUtil = new JsonUtils()
\r
30 VidUtils vidUtils = new VidUtils()
\r
32 String createDBRequestError =
\r
33 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
\r
36 <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
\r
37 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
\r
38 <lastModifiedBy>BPMN</lastModifiedBy>
\r
39 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
\r
40 <responseBody></responseBody>
\r
41 <requestStatus>FAILED</requestStatus>
\r
42 <vnfOutputs><network-id></network-id><network-name></network-names></vnfOutputs>
\r
43 </ns:updateInfraRequest>
\r
45 </soapenv:Envelope>"""
\r
47 String falloutHandlerRequest =
\r
48 """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
\r
49 xmlns:ns="http://org.openecomp/mso/request/types/v1"
\r
50 xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
\r
51 <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
\r
52 <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
\r
53 <action>CREATE</action>
\r
54 <source>VID</source>
\r
56 <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
\r
57 <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available.</aetgt:ErrorMessage>
\r
58 <aetgt:ErrorCode>5300</aetgt:ErrorCode>
\r
59 </aetgt:WorkflowException>
\r
60 </aetgt:FalloutHandlerRequest>"""
\r
62 String completeMsoProcessRequest =
\r
63 """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
\r
64 xmlns:ns="http://org.openecomp/mso/request/types/v1"
\r
65 xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
\r
67 <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
\r
68 <action>CREATE</action>
\r
69 <source>VID</source>
\r
71 <aetgt:status-message>Network has been created successfully.</aetgt:status-message>
\r
72 <aetgt:mso-bpel-name>BPMN Network action: CREATE</aetgt:mso-bpel-name>
\r
73 </aetgt:MsoCompletionRequest>"""
\r
75 String jsonIncomingRequest =
\r
79 "description": "so_test2",
\r
80 "serviceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561519",
\r
81 "templateId": "592f9437-a9c0-4303-b9f6-c445bb7e9814",
\r
83 "globalSubscriberId": "123457",
\r
84 "subscriberName": "Customer1",
\r
85 "serviceType": "voLTE",
\r
86 "templateName": "voLTE Service:1.0",
\r
89 "resourceName": "vIMS",
\r
90 "resourceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561516",
\r
91 "resourceId": "60c3e96e-0970-4871-b6e0-3b6de7561512",
\r
93 "locationConstraints": [
\r
95 "vnfProfileId": "zte-vBAS-1.0",
\r
96 "locationConstraints": {
\r
97 "vimId": "4050083f-465f-4838-af1e-47a545222ad0"
\r
101 "vnfProfileId": "zte-vMME-1.0",
\r
102 "locationConstraints": {
\r
103 "vimId": "4050083f-465f-4838-af1e-47a545222ad0"
\r
107 "additionalParamForNs": {}
\r
111 "resourceName": "vEPC",
\r
112 "resourceDefId": "61c3e96e-0970-4871-b6e0-3b6de7561516",
\r
113 "resourceId": "62c3e96e-0970-4871-b6e0-3b6de7561512",
\r
115 "locationConstraints": [
\r
117 "vnfProfileId": "zte-CSCF-1.0",
\r
118 "locationConstraints": {
\r
119 "vimId": "4050083f-465f-4838-af1e-47a545222ad1"
\r
123 "additionalParamForNs": {}
\r
127 "resourceName": "underlayvpn",
\r
128 "resourceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561513",
\r
129 "resourceId": "60c3e96e-0970-4871-b6e0-3b6de7561514",
\r
131 "locationConstraints": [],
\r
132 "additionalParamForNs": {
\r
133 "externalDataNetworkName": "Flow_out_net",
\r
134 "m6000_mng_ip": "181.18.20.2",
\r
135 "externalCompanyFtpDataNetworkName": "Flow_out_net",
\r
136 "externalPluginManageNetworkName": "plugin_net_2014",
\r
137 "externalManageNetworkName": "mng_net_2017",
\r
138 "sfc_data_network": "sfc_data_net_2016",
\r
139 "NatIpRange": "210.1.1.10-210.1.1.20",
\r
140 "location": "4050083f-465f-4838-af1e-47a545222ad0",
\r
141 "sdncontroller": "9b9f02c0-298b-458a-bc9c-be3692e4f35e"
\r
146 "resourceName": "overlayvpn",
\r
147 "resourceDefId": "60c3e96e-0970-4871-b6e0-3b6de7561517",
\r
148 "resourceId": "60c3e96e-0970-4871-b6e0-3b6de7561518",
\r
150 "locationConstraints": [],
\r
151 "additionalParamForNs": {
\r
152 "externalDataNetworkName": "Flow_out_net",
\r
153 "m6000_mng_ip": "181.18.20.2",
\r
154 "externalCompanyFtpDataNetworkName": "Flow_out_net",
\r
155 "externalPluginManageNetworkName": "plugin_net_2014",
\r
156 "externalManageNetworkName": "mng_net_2017",
\r
157 "sfc_data_network": "sfc_data_net_2016",
\r
158 "NatIpRange": "210.1.1.10-210.1.1.20",
\r
159 "location": "4050083f-465f-4838-af1e-47a545222ad0",
\r
160 "sdncontroller": "9b9f02c0-298b-458a-bc9c-be3692e4f35e"
\r
172 MockitoAnnotations.initMocks(this)
\r
176 public void initializeVariables(Execution mockExecution) {
\r
178 verify(mockExecution).setVariable(Prefix + "Success", false)
\r
180 verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")
\r
181 verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")
\r
182 verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
\r
188 public void preProcessRequest() {
\r
190 println "************ preProcessRequest() ************* "
\r
191 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
192 // Initialize prerequisite variables
\r
193 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
194 when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
\r
197 // preProcessRequest(Execution execution)
\r
198 CreateGenericALaCarteServiceInstance createGenericALaCarteServiceInstance = new CreateGenericALaCarteServiceInstance()
\r
199 createGenericALaCarteServiceInstance.preProcessRequest(mockExecution)
\r
201 verify(mockExecution).getVariable("isDebugLogEnabled")
\r
202 verify(mockExecution).setVariable("prefix", Prefix)
\r
204 initializeVariables(mockExecution)
\r
205 //verify(mockExecution).setVariable(Prefix + "Success", false)
\r
206 }catch(Exception e){
\r
213 public void sendSyncResponse() {
\r
215 println "************ sendSyncResponse ************* "
\r
217 ExecutionEntity mockExecution = setupMock()
\r
218 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
219 when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
\r
220 when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
\r
221 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
\r
223 // preProcessRequest(Execution execution)
\r
224 CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
\r
225 CreateNetworkInstance.sendSyncResponse(mockExecution)
\r
227 verify(mockExecution).setVariable("prefix", Prefix)
\r
228 verify(mockExecution).setVariable("CreateNetworkInstanceResponseCode", "202")
\r
229 }catch(Exception e){
\r
236 public void sendSyncError() {
\r
238 println "************ sendSyncError ************* "
\r
240 ExecutionEntity mockExecution = setupMock()
\r
241 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
242 when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
\r
243 when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
\r
244 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
\r
246 CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
\r
247 CreateNetworkInstance.sendSyncError(mockExecution)
\r
249 verify(mockExecution).setVariable("prefix", Prefix)
\r
250 verify(mockExecution).setVariable("CreateNetworkInstanceResponseCode", "500")
\r
251 }catch(Exception e){
\r
256 private ExecutionEntity setupMock() {
\r
258 ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
\r
259 when(mockProcessDefinition.getKey()).thenReturn("CreateNetworkInstance")
\r
260 RepositoryService mockRepositoryService = mock(RepositoryService.class)
\r
261 when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
\r
262 when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("CreateNetworkInstance")
\r
263 when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
\r
264 ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
\r
265 when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
\r
267 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
268 // Initialize prerequisite variables
\r
270 when(mockExecution.getId()).thenReturn("100")
\r
271 when(mockExecution.getProcessDefinitionId()).thenReturn("CreateNetworkInstance")
\r
272 when(mockExecution.getProcessInstanceId()).thenReturn("CreateNetworkInstance")
\r
273 when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
\r
274 when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
\r
276 return mockExecution
\r