Query AAI for ARs on delete
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / groovy / org / openecomp / mso / bpmn / vcpe / scripts / DeleteVcpeResCustServiceTest.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 package org.openecomp.mso.bpmn.vcpe.scripts
21 \r
22 \r
23 import org.camunda.bpm.engine.ProcessEngineServices\r
24 import org.camunda.bpm.engine.RepositoryService\r
25 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity\r
26 import org.camunda.bpm.engine.repository.ProcessDefinition\r
27 import org.camunda.bpm.engine.runtime.Execution\r
28 import org.junit.Before
29 import org.junit.BeforeClass\r
30 import org.junit.Rule\r
31 import org.junit.Test
32 import org.junit.Ignore\r
33 import org.mockito.MockitoAnnotations
34 import org.camunda.bpm.engine.delegate.BpmnError\r
35 import org.openecomp.mso.bpmn.core.WorkflowException
36 import org.openecomp.mso.bpmn.mock.FileUtil
37
38 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse
39 import static com.github.tomakehurst.wiremock.client.WireMock.get
40 import static com.github.tomakehurst.wiremock.client.WireMock.patch
41 import static com.github.tomakehurst.wiremock.client.WireMock.put
42 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor
43 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
44 import static org.junit.Assert.*;\r
45 import static org.mockito.Mockito.*
46 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource
47 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
48 import org.openecomp.mso.bpmn.core.domain.VnfResource
49 import org.openecomp.mso.bpmn.core.domain.AllottedResource
50 import org.openecomp.mso.bpmn.core.domain.ModelInfo
51 import org.openecomp.mso.bpmn.core.domain.HomingSolution
52 import org.openecomp.mso.bpmn.core.RollbackData
53 import org.openecomp.mso.bpmn.vcpe.scripts.MapGetter
54 import org.openecomp.mso.bpmn.vcpe.scripts.MapSetter
55
56 import com.github.tomakehurst.wiremock.junit.WireMockRule\r
57 \r
58 class DeleteVcpeResCustServiceTest extends GroovyTestBase {
59         
60         private static String request\r
61         \r
62         @Rule\r
63         public WireMockRule wireMockRule = new WireMockRule(PORT)
64 \r
65         String Prefix = "DVRCS_"
66         String RbType = "DCRENI_"\r
67
68         @BeforeClass
69         public static void setUpBeforeClass() {
70                 super.setUpBeforeClass()
71                 request = FileUtil.readResourceFile("__files/VCPE/DeleteVcpeResCustService/request.json")
72         }
73           \r
74     @Before\r
75         public void init()\r
76         {\r
77                 MockitoAnnotations.initMocks(this)\r
78         }
79         
80         public DeleteVcpeResCustServiceTest() {
81                 super("DeleteVcpeResCustService")
82         }
83         
84         
85         // ***** preProcessRequest *****\r
86                         \r
87         @Test\r
88 //      @Ignore  \r
89         public void preProcessRequest() {\r
90                 ExecutionEntity mex = setupMock()
91                 def map = setupMap(mex)
92                 initPreProcess(mex)
93                 \r
94                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()\r
95                 DeleteVcpeResCustService.preProcessRequest(mex)\r
96 \r
97                 verify(mex).getVariable(DBGFLAG)
98                 
99                 assertEquals(Prefix, map.get("prefix"))
100                 assertEquals(request, map.get("DeleteVcpeResCustServiceRequest"))
101                 assertEquals("mri", map.get("msoRequestId"))
102                 assertEquals("ra", map.get("requestAction"))
103                 assertEquals("VID", map.get("source"))
104                 assertEquals(CUST, map.get("globalSubscriberId"))
105                 assertEquals(CUST, map.get("globalCustomerId"))
106                 assertEquals("false", map.get("disableRollback"))
107                 assertEquals("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", map.get("productFamilyId"))
108                 assertEquals(SVC, map.get("subscriptionServiceType"))
109                 
110                 assertEquals("mdt1", map.get("lcpCloudRegionId"))
111                 assertEquals("8b1df54faa3b49078e3416e21370a3ba", map.get("tenantId"))
112                 assertEquals("1707", map.get("sdncVersion"))
113                 assertEquals("service-instance", map.get("GENGS_type"))
114                 assertEquals("""{"tenantId":"8b1df54faa3b49078e3416e21370a3ba","lcpCloudRegionId":"mdt1"}""", map.get("cloudConfiguration"))
115                 assertTrue(map.containsKey(Prefix+"requestInfo"))
116                 
117                 def reqinfo = map.get(Prefix+"requestInfo")
118                 assertTrue(reqinfo.indexOf("<request-id>mri</") >= 0)
119                 assertTrue(reqinfo.indexOf("<source>VID</") >= 0)\r
120         }
121                         
122         @Test
123 //      @Ignore  
124         public void preProcessRequest_EmptyParts() {
125                 ExecutionEntity mex = setupMock()
126                 def map = setupMap(mex)
127                 initPreProcess(mex)
128                 
129                 def req = request
130                                         .replace('"source"', '"sourceXXX"')
131                 
132                 when(mex.getVariable("bpmnRequest")).thenReturn(req)
133                 
134                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
135                 DeleteVcpeResCustService.preProcessRequest(mex)
136
137                 verify(mex).getVariable(DBGFLAG)
138                 verify(mex).setVariable("prefix", Prefix)
139                 verify(mex).setVariable("DeleteVcpeResCustServiceRequest", req)
140                 verify(mex).setVariable("msoRequestId", "mri")
141                 verify(mex).setVariable("requestAction", "ra")
142                 verify(mex).setVariable("source", "VID")
143                 verify(mex).setVariable("globalSubscriberId", CUST)
144                 verify(mex).setVariable("globalCustomerId", CUST)
145                 verify(mex).setVariable("disableRollback", "false")
146                 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
147                 verify(mex).setVariable("subscriptionServiceType", SVC) 
148                 
149                 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
150                 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
151                 assertEquals("""{"tenantId":"8b1df54faa3b49078e3416e21370a3ba","lcpCloudRegionId":"mdt1"}""", map.get("cloudConfiguration"))
152                 verify(mex).setVariable("sdncVersion", "1707")
153                 verify(mex).setVariable("GENGS_type", "service-instance")
154                 assertTrue(map.containsKey(Prefix+"requestInfo"))
155                 
156                 def reqinfo = map.get(Prefix+"requestInfo")
157                 println reqinfo
158                 assertTrue(reqinfo.indexOf("<request-id>mri</") >= 0)
159                 assertTrue(reqinfo.indexOf("<source>VID</") >= 0)
160         }
161                         
162         @Test
163 //      @Ignore  
164         public void preProcessRequest_MissingServiceInstanceId() {
165                 ExecutionEntity mex = setupMock()
166                 initPreProcess(mex)
167                 
168                 when(mex.getVariable("serviceInstanceId")).thenReturn(null)
169                 
170                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
171                 
172                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.preProcessRequest(mex) }))
173         }
174                         
175         @Test
176 //      @Ignore  
177         public void preProcessRequest_BpmnError() {
178                 ExecutionEntity mex = setupMock()
179                 initPreProcess(mex)
180                 
181                 when(mex.getVariable("bpmnRequest")).thenThrow(new BpmnError("expected exception"))
182                 
183                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
184                 
185                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.preProcessRequest(mex) }))
186         }
187                         
188         @Test
189 //      @Ignore  
190         public void preProcessRequest_Ex() {
191                 ExecutionEntity mex = setupMock()
192                 initPreProcess(mex)
193                 
194                 when(mex.getVariable("bpmnRequest")).thenThrow(new RuntimeException("expected exception"))
195                 
196                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
197                 
198                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.preProcessRequest(mex) }))
199         }
200         
201         private void initPreProcess(ExecutionEntity mex) {
202                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
203                 when(mex.getVariable("bpmnRequest")).thenReturn(request)
204                 when(mex.getVariable("mso-request-id")).thenReturn("mri")
205                 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
206                 when(mex.getVariable("requestAction")).thenReturn("ra")
207         }
208         
209         // ***** sendSyncResponse *****
210                         
211         @Test
212 //      @Ignore  
213         public void sendSyncResponse() {
214                 ExecutionEntity mex = setupMock()
215                 def map = setupMap(mex)
216                 initSendSyncResponse(mex)
217                 
218                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
219                 DeleteVcpeResCustService.sendSyncResponse(mex)
220
221                 verify(mex, times(2)).getVariable(DBGFLAG)
222                 
223                 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
224                 
225                 assertEquals("202", map.get(processName+"ResponseCode"))
226                 assertEquals("Success", map.get(processName+"Status"))
227                 
228                 def resp = map.get(processName+"Response")
229                 
230                 assertTrue(resp.indexOf('"instanceId":"sii"') >= 0)
231                 assertTrue(resp.indexOf('"requestId":"mri"') >= 0)
232         }
233                         
234         @Test
235 //      @Ignore  
236         public void sendSyncResponse_Ex() {
237                 ExecutionEntity mex = setupMock()
238                 initSendSyncResponse(mex)
239                 
240                 when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception"))
241                 
242                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
243                 
244                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.sendSyncResponse(mex) }))
245         }
246         
247         private initSendSyncResponse(ExecutionEntity mex) {
248                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
249                 when(mex.getVariable("mso-request-id")).thenReturn("mri")
250                 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
251         }
252         
253         // ***** prepareServiceDelete *****
254                         
255         @Test
256 //      @Ignore  
257         public void prepareServiceDelete() {
258                 ExecutionEntity mex = setupMock()
259                 def map = setupMap(mex)
260                 initPrepareServiceDelete(mex)
261                 
262                 myMockGetAr("/aai/v11/anytxc", 200, "arGetTXCById.xml");
263                 myMockGetAr("/aai/v11/anybrg", 200, "arGetBRGById.xml");
264                 myMockGetAr("/aai/v11/other", 200, "arGetOtherById.xml");
265                 
266                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
267                 DeleteVcpeResCustService.prepareServiceDelete(mex)
268                 
269                 verify(mex).setVariable(Prefix+"TunnelXConn", true)
270                 assertEquals("ar-txcA", map.get("TXC_allottedResourceId"))
271                 
272                 verify(mex).setVariable(Prefix+"BRG", true)
273                 assertEquals("ar-brgB", map.get("BRG_allottedResourceId"))
274                 
275                 verify(mex).setVariable(Prefix+"vnfsCount", 2)
276                 assertNotNull(map.get(Prefix+"relatedVnfIdList"))
277                 assertEquals("[vnfX, vnfY]", map.get(Prefix+"relatedVnfIdList").toString())
278                 
279                 verify(mex, never()).setVariable(processName+"WorkflowResponseSent", "true")
280         }
281                         
282         @Test
283 //      @Ignore  
284         public void prepareServiceDelete_NotFound() {
285                 ExecutionEntity mex = setupMock()
286                 initPrepareServiceDelete(mex)
287                 
288                 when(mex.getVariable("GENGS_FoundIndicator")).thenReturn(false)
289                 
290                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
291                 
292                 assertTrue(doBpmnError({ _ -> DeleteVcpeResCustService.prepareServiceDelete(mex) }))
293                 
294                 verify(mex, never()).setVariable(processName+"WorkflowResponseSent", "true")
295         }
296                         
297         @Test
298 //      @Ignore  
299         public void prepareServiceDelete_Empty() {
300                 ExecutionEntity mex = setupMock()
301                 def map = setupMap(mex)
302                 initPrepareServiceDelete(mex)
303                 
304                 when(mex.getVariable("GENGS_service")).thenReturn("<empty></empty>")
305                 
306                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
307                 DeleteVcpeResCustService.prepareServiceDelete(mex)
308
309                 verify(mex).getVariable(DBGFLAG)
310                 
311                 verify(mex).setVariable(Prefix+"TunnelXConn", false)
312                 assertNull(map.get("TXC_allottedResourceId"))
313                 
314                 verify(mex).setVariable(Prefix+"BRG", false)
315                 assertNull(map.get("BRG_allottedResourceId"))
316                 
317                 assertEquals(0, map.get(Prefix+"vnfsCount"))
318                 assertFalse(map.containsKey(Prefix+"relatedVnfIdList"))
319                 
320                 verify(mex, never()).setVariable(processName+"WorkflowResponseSent", "true")
321         }
322                         
323         @Test
324 //      @Ignore  
325         public void prepareServiceDelete_BpmnError() {
326                 ExecutionEntity mex = setupMock()
327                 initPrepareServiceDelete(mex)
328                 
329                 when(mex.getVariable("GENGS_FoundIndicator")).thenThrow(new BpmnError("expected exception"))
330                 
331                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
332                 
333                 assertTrue(doBpmnError({ _ -> DeleteVcpeResCustService.prepareServiceDelete(mex) }))
334                 
335                 verify(mex, never()).setVariable(processName+"WorkflowResponseSent", "true")
336         }
337                         
338         @Test
339 //      @Ignore  
340         public void prepareServiceDelete_Ex() {
341                 ExecutionEntity mex = setupMock()
342                 initPrepareServiceDelete(mex)
343                 
344                 when(mex.getVariable("GENGS_FoundIndicator")).thenThrow(new RuntimeException("expected exception"))
345                 
346                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
347                 
348                 assertTrue(doBpmnError({ _ -> DeleteVcpeResCustService.prepareServiceDelete(mex) }))
349                 
350                 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
351         }
352         
353         private initPrepareServiceDelete(ExecutionEntity mex) {
354                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
355                 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
356                 when(mex.getVariable("GENGS_FoundIndicator")).thenReturn(true)
357                 when(mex.getVariable("mso-request-id")).thenReturn("mri")
358                 when(mex.getVariable("DeleteVcpeResCustServiceRequest")).thenReturn(request)
359                 when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
360                 when(mex.getVariable("GENGS_service")).thenReturn(FileUtil.readResourceFile("__files/VCPE/DeleteVcpeResCustService/serviceToDelete.xml"))
361         }
362         
363         // ***** getAaiAr *****
364         
365         @Test
366 //      @Ignore
367         public void getAaiAr() {
368                 myMockGetAr("/myurl/ar1", 200, "arGetBRGById.xml");
369                 
370                 ExecutionEntity mex = setupMock()
371                 initGetAaiAr(mex)
372                                 
373                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
374                 def (type, id) = DeleteVcpeResCustService.getAaiAr(mex, "/myurl/ar1")
375                 
376                 assertEquals("BRG", type)
377                 assertEquals("ar-brgB", id)
378         }
379         
380         @Test
381 //      @Ignore
382         public void getAaiAr_401() {
383                 myMockGetAr("/myurl/ar1", 401, "arGetBRGById.xml");
384                 
385                 ExecutionEntity mex = setupMock()
386                 initGetAaiAr(mex)
387                                 
388                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
389                 def (type, id) = DeleteVcpeResCustService.getAaiAr(mex, "/myurl/ar1")
390                 
391                 assertEquals(null, type)
392                 assertEquals(null, id)
393         }
394         
395         @Test
396 //      @Ignore
397         public void getAaiAr_EmptyResponse() {
398                 myMockGetAr("/myurl/ar1", 200, "empty.txt");
399                 
400                 ExecutionEntity mex = setupMock()
401                 initGetAaiAr(mex)
402                                 
403                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
404                 def (type, id) = DeleteVcpeResCustService.getAaiAr(mex, "/myurl/ar1")
405                 
406                 assertEquals(null, type)
407                 assertEquals(null, id)
408         }
409         
410         private void initGetAaiAr(ExecutionEntity mex) {
411                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
412                 when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
413         }
414         
415         // ***** prepareVnfAndModulesDelete *****
416                         
417         @Test
418 //      @Ignore  
419         public void prepareVnfAndModulesDelete() {
420                 ExecutionEntity mex = setupMock()
421                 initPrepareVnfAndModulesDelete(mex)
422                 
423                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
424                 DeleteVcpeResCustService.prepareVnfAndModulesDelete(mex)
425
426                 verify(mex).getVariable(DBGFLAG)
427                 
428                 verify(mex).setVariable("vnfId", "vnfB")
429         }
430                         
431         @Test
432 //      @Ignore  
433         public void prepareVnfAndModulesDelete_Empty() {
434                 ExecutionEntity mex = setupMock()
435                 initPrepareVnfAndModulesDelete(mex)
436                 
437                 when(mex.getVariable(Prefix+"relatedVnfIdList")).thenReturn(new LinkedList())
438                 
439                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
440                 DeleteVcpeResCustService.prepareVnfAndModulesDelete(mex)
441
442                 verify(mex).getVariable(DBGFLAG)
443                 
444                 verify(mex).setVariable("vnfId", "")
445         }
446                         
447         @Test
448 //      @Ignore  
449         public void prepareVnfAndModulesDelete_Ex() {
450                 ExecutionEntity mex = setupMock()
451                 initPrepareVnfAndModulesDelete(mex)
452                 
453                 when(mex.getVariable(Prefix+"relatedVnfIdList")).thenThrow(new RuntimeException("expected exception"))
454                 
455                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
456                 
457                 assertTrue(doBpmnError({ _ -> DeleteVcpeResCustService.prepareVnfAndModulesDelete(mex) }))
458         }
459         
460         private initPrepareVnfAndModulesDelete(ExecutionEntity mex) {
461                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
462                 when(mex.getVariable(Prefix+"relatedVnfIdList")).thenReturn(Arrays.asList("vnfA", "vnfB", "vnfC"))
463                 when(mex.getVariable(Prefix+"vnfsDeletedCount")).thenReturn(1)
464         }
465         
466         // ***** validateVnfDelete *****
467                         
468         @Test
469 //      @Ignore  
470         public void validateVnfDelete() {
471                 ExecutionEntity mex = setupMock()
472                 initValidateVnfDelete(mex)
473                 
474                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
475                 DeleteVcpeResCustService.validateVnfDelete(mex)
476
477                 verify(mex).getVariable(DBGFLAG)
478                 
479                 verify(mex).setVariable(Prefix+"vnfsDeletedCount", 3)
480         }
481                         
482         @Test
483 //      @Ignore  
484         public void validateVnfDelete_Ex() {
485                 ExecutionEntity mex = setupMock()
486                 initValidateVnfDelete(mex)
487                 
488                 when(mex.getVariable(Prefix+"vnfsDeletedCount")).thenThrow(new RuntimeException("expected exception"))
489                 
490                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
491                 
492                 assertTrue(doBpmnError({ _ -> DeleteVcpeResCustService.validateVnfDelete(mex) }))
493         }
494         
495         private initValidateVnfDelete(ExecutionEntity mex) {
496                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
497                 when(mex.getVariable(Prefix+"vnfsDeletedCount")).thenReturn(2)
498         }
499         
500         // ***** postProcessResponse *****
501                         
502         @Test
503 //      @Ignore  
504         public void postProcessResponse() {
505                 ExecutionEntity mex = setupMock()
506                 def map = setupMap(mex)
507                 initPostProcessResponse(mex)
508                 
509                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
510                 DeleteVcpeResCustService.postProcessResponse(mex)
511
512                 verify(mex).getVariable(DBGFLAG)
513                 
514                 assertEquals(true, map.get(Prefix+"Success"))
515                 
516                 def req = map.get(Prefix+"CompleteMsoProcessRequest")
517                 
518                 assertTrue(req.indexOf("<request-id>mri</") >= 0)
519                 assertTrue(req.indexOf("<source>mysrc</") >= 0)
520         }
521                         
522         @Test
523 //      @Ignore  
524         public void postProcessResponse_BpmnError() {
525                 ExecutionEntity mex = setupMock()
526                 initPostProcessResponse(mex)
527                 
528                 when(mex.getVariable("source")).thenThrow(new BpmnError("expected exception"))
529                 
530                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
531                 
532                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.postProcessResponse(mex) }))
533         }
534                         
535         @Test
536 //      @Ignore  
537         public void postProcessResponse_Ex() {
538                 ExecutionEntity mex = setupMock()
539                 initPostProcessResponse(mex)
540                 
541                 when(mex.getVariable("source")).thenThrow(new RuntimeException("expected exception"))
542                 
543                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
544                 
545                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.postProcessResponse(mex) }))
546         }
547         
548         private initPostProcessResponse(ExecutionEntity mex) {
549                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
550                 when(mex.getVariable("source")).thenReturn("mysrc")
551                 when(mex.getVariable("msoRequestId")).thenReturn("mri")
552         }
553         
554         
555         // ***** prepareFalloutRequest *****
556                         
557         @Test
558 //      @Ignore  
559         public void prepareFalloutRequest() {
560                 ExecutionEntity mex = setupMock()
561                 def map = setupMap(mex)
562                 initPrepareFalloutRequest(mex)
563                 
564                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
565                 DeleteVcpeResCustService.prepareFalloutRequest(mex)
566
567                 verify(mex, times(2)).getVariable(DBGFLAG)
568                 
569                 def fo = map.get(Prefix+"falloutRequest")
570                 
571                 assertTrue(fo.indexOf("<hello>world</") >= 0)
572                 assertTrue(fo.indexOf("ErrorMessage>mymsg</") >= 0)
573                 assertTrue(fo.indexOf("ErrorCode>999</") >= 0)
574         }
575                         
576         @Test
577 //      @Ignore  
578         public void prepareFalloutRequest_Ex() {
579                 ExecutionEntity mex = setupMock()
580                 def map = setupMap(mex)
581                 initPrepareFalloutRequest(mex)
582                 
583                 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
584                 
585                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
586                 
587                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.prepareFalloutRequest(mex) }))
588         }
589         
590         private initPrepareFalloutRequest(ExecutionEntity mex) {
591                 WorkflowException wfe = mock(WorkflowException.class)
592                 
593                 when(wfe.getErrorMessage()).thenReturn("mymsg")
594                 when(wfe.getErrorCode()).thenReturn(999)
595                 
596                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
597                 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
598                 when(mex.getVariable(Prefix+"requestInfo")).thenReturn("<hello>world</hello>")
599                 
600                 return wfe
601         }
602         
603         // ***** sendSyncError *****
604                         
605         @Test
606 //      @Ignore  
607         public void sendSyncError() {
608                 ExecutionEntity mex = setupMock()
609                 def map = setupMap(mex)
610                 initSendSyncError(mex)
611                 
612                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
613                 DeleteVcpeResCustService.sendSyncError(mex)
614
615                 verify(mex, times(2)).getVariable(DBGFLAG)
616                 
617                 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
618                 
619                 assertEquals("500", map.get(processName+"ResponseCode"))
620                 assertEquals("Fail", map.get(processName+"Status"))
621                 
622                 def resp = map.get(processName+"Response")
623                 
624                 assertTrue(resp.indexOf("ErrorMessage>mymsg</") >= 0)
625                 
626                 verify(mex).setVariable("WorkflowResponse", resp)
627         }
628                         
629         @Test
630 //      @Ignore  
631         public void sendSyncError_NotWfe() {
632                 ExecutionEntity mex = setupMock()
633                 def map = setupMap(mex)
634                 initSendSyncError(mex)
635                 
636                 when(mex.getVariable("WorkflowException")).thenReturn("not a WFE")
637                 
638                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
639                 DeleteVcpeResCustService.sendSyncError(mex)
640
641                 verify(mex, times(2)).getVariable(DBGFLAG)
642                 
643                 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
644                 
645                 assertEquals("500", map.get(processName+"ResponseCode"))
646                 assertEquals("Fail", map.get(processName+"Status"))
647                 
648                 def resp = map.get(processName+"Response")
649                 
650                 assertTrue(resp.indexOf("ErrorMessage>Sending Sync Error.</") >= 0)
651                 
652                 verify(mex).setVariable("WorkflowResponse", resp)
653         }
654                         
655         @Test
656 //      @Ignore  
657         public void sendSyncError_NullWfe() {
658                 ExecutionEntity mex = setupMock()
659                 def map = setupMap(mex)
660                 initSendSyncError(mex)
661                 
662                 when(mex.getVariable("WorkflowException")).thenReturn(null)
663                 
664                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
665                 DeleteVcpeResCustService.sendSyncError(mex)
666
667                 verify(mex, times(2)).getVariable(DBGFLAG)
668                 
669                 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
670                 
671                 assertEquals("500", map.get(processName+"ResponseCode"))
672                 assertEquals("Fail", map.get(processName+"Status"))
673                 
674                 def resp = map.get(processName+"Response")
675                 
676                 assertTrue(resp.indexOf("ErrorMessage>Sending Sync Error.</") >= 0)
677                 
678                 verify(mex).setVariable("WorkflowResponse", resp)
679         }
680                         
681         @Test
682 //      @Ignore  
683         public void sendSyncError_Ex() {
684                 ExecutionEntity mex = setupMock()
685                 def map = setupMap(mex)
686                 initSendSyncError(mex)
687                 
688                 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
689                 
690                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
691                 
692                 DeleteVcpeResCustService.sendSyncError(mex)
693                 
694                 assertFalse(map.containsKey(processName+"ResponseCode"))
695         }
696         
697         private initSendSyncError(ExecutionEntity mex) {
698                 WorkflowException wfe = mock(WorkflowException.class)
699                 
700                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
701                 when(mex.getVariable("mso-request-id")).thenReturn("mri")
702                 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
703                 
704                 when(wfe.getErrorMessage()).thenReturn("mymsg")
705         }
706         
707         
708         // ***** processJavaException *****
709                         
710         @Test
711 //      @Ignore  
712         public void processJavaException() {
713                 ExecutionEntity mex = setupMock()
714                 def map = setupMap(mex)
715                 initProcessJavaException(mex)
716                 
717                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
718                 
719                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.processJavaException(mex) }))
720
721                 verify(mex, times(2)).getVariable(DBGFLAG)
722                 
723                 verify(mex).setVariable("prefix", Prefix)
724                 
725                 def wfe = map.get("WorkflowException")
726                 
727                 assertEquals("Caught a Java Lang Exception", wfe.getErrorMessage())
728         }
729                         
730         @Test
731 //      @Ignore  
732         public void processJavaException_BpmnError() {
733                 ExecutionEntity mex = setupMock()
734                 def map = setupMap(mex)
735                 initProcessJavaException(mex)
736                 
737                 when(mex.getVariables()).thenThrow(new BpmnError("expected exception"))
738                 
739                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
740                 
741                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.processJavaException(mex) }))
742                 
743                 assertFalse(map.containsKey("WorkflowException"))
744         }
745                         
746         @Test
747 //      @Ignore  
748         public void processJavaException_Ex() {
749                 ExecutionEntity mex = setupMock()
750                 def map = setupMap(mex)
751                 initProcessJavaException(mex)
752                 
753                 when(mex.getVariables()).thenThrow(new RuntimeException("expected exception"))
754                 
755                 DeleteVcpeResCustService DeleteVcpeResCustService = new DeleteVcpeResCustService()
756                 
757                 assertTrue(doBpmnError( { _ -> DeleteVcpeResCustService.processJavaException(mex) }))
758                 
759                 def wfe = map.get("WorkflowException")
760                 
761                 assertEquals("Exception in processJavaException method", wfe.getErrorMessage())
762         }
763         
764         private initProcessJavaException(ExecutionEntity mex) {
765                 when(mex.getVariable(DBGFLAG)).thenReturn("true")
766         }
767         
768         private void myMockGetAr(String url, int status, String fileResp) {
769                 stubFor(get(urlMatching(url))
770                                 .willReturn(aResponse()
771                                                 .withStatus(status)
772                                                 .withHeader("Content-Type", "text/xml")
773                                                 .withBodyFile("VCPE/DeleteVcpeResCustService/" + fileResp)));
774         }\r
775 }