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
234 private ExecutionEntity setupMock() {
\r
236 ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
\r
237 when(mockProcessDefinition.getKey()).thenReturn("CreateNetworkInstance")
\r
238 RepositoryService mockRepositoryService = mock(RepositoryService.class)
\r
239 when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
\r
240 when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("CreateNetworkInstance")
\r
241 when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
\r
242 ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
\r
243 when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
\r
245 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
246 // Initialize prerequisite variables
\r
248 when(mockExecution.getId()).thenReturn("100")
\r
249 when(mockExecution.getProcessDefinitionId()).thenReturn("CreateNetworkInstance")
\r
250 when(mockExecution.getProcessInstanceId()).thenReturn("CreateNetworkInstance")
\r
251 when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
\r
252 when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
\r
254 return mockExecution
\r