32a4c54e8e4e3c3472e6a16d0da87cb5f0c48b6d
[so.git] / bpmn / MSOCommonBPMN / src / test / groovy / org / openecomp / mso / bpmn / common / scripts / FalloutHandlerTest.groovy
1 /*- \r
2  * ============LICENSE_START======================================================= \r
3  * OPENECOMP - MSO \r
4  * ================================================================================ \r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. \r
6  * ================================================================================ \r
7  * Licensed under the Apache License, Version 2.0 (the "License"); \r
8  * you may not use this file except in compliance with the License. \r
9  * You may obtain a copy of the License at \r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0 \r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software \r
14  * distributed under the License is distributed on an "AS IS" BASIS, \r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \r
16  * See the License for the specific language governing permissions and \r
17  * limitations under the License. \r
18  * ============LICENSE_END========================================================= \r
19  */ \r
20 \r
21 package org.openecomp.mso.bpmn.common.scripts\r
22 \r
23 import org.junit.runner.RunWith;\r
24 import static org.mockito.Mockito.*\r
25 import static org.junit.Assert.*;\r
26 \r
27 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity\r
28 import org.junit.Before\r
29 import org.junit.Test\r
30 import org.junit.runner.RunWith\r
31 import org.mockito.ArgumentCaptor;\r
32 import org.mockito.MockitoAnnotations\r
33 import org.mockito.runners.MockitoJUnitRunner\r
34 import org.openecomp.mso.bpmn.common.scripts.MsoUtils;\r
35 import org.openecomp.mso.bpmn.common.scripts.FalloutHandler;\r
36 \r
37 @RunWith(MockitoJUnitRunner.class)\r
38 class FalloutHandlerTest {\r
39         \r
40         public MsoUtils utils = new MsoUtils()\r
41         \r
42         @Before\r
43         public void init() {\r
44                 MockitoAnnotations.initMocks(this)\r
45         }\r
46 \r
47         private String falloutHandlerRequest = """\r
48                                 <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:ns7="http://org.openecomp/mso/request/types/v1">\r
49                                                 <ns7:request-information>\r
50                                                         <ns7:request-id>uCPE1020_STUW105_5002</ns7:request-id>\r
51                                                         <ns7:request-action>Layer3ServiceActivateRequest</ns7:request-action>\r
52                                                         <ns7:request-sub-action>CANCEL</ns7:request-sub-action>\r
53                                                         <ns7:source>OMX</ns7:source>\r
54                                                         <ns7:order-number>10205000</ns7:order-number>\r
55                                                         <ns7:order-version>1</ns7:order-version>\r
56                                                 </ns7:request-information>\r
57                                                 <sdncadapterworkflow:WorkflowException>\r
58                                                         <sdncadapterworkflow:ErrorMessage>Some Error Message - Fallout Handler</sdncadapterworkflow:ErrorMessage>\r
59                                                         <sdncadapterworkflow:ErrorCode>Some Error Code - Fallout Handler</sdncadapterworkflow:ErrorCode>\r
60                                                         <sdncadapterworkflow:SourceSystemErrorCode>Some Source System Error Code- Fallout Handler</sdncadapterworkflow:SourceSystemErrorCode>\r
61                                                 </sdncadapterworkflow:WorkflowException>\r
62                                 </sdncadapterworkflow:FalloutHandlerRequest>\r
63                 """\r
64 \r
65         private String falloutHandlerResponse = """<workflow:FalloutHandlerResponse xmlns:workflow="http://org.openecomp/mso/workflow/schema/v1">\r
66   <workflow:out>Fallout Handler Failed</workflow:out>\r
67 </workflow:FalloutHandlerResponse>"""\r
68 \r
69         @Test\r
70         public void testPreProcessRequest() {\r
71 \r
72                 ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
73 \r
74                 when(mockExecution.getVariable("FalloutHandlerRequest")).thenReturn(falloutHandlerRequest)\r
75                 when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC");\r
76                 when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7");\r
77 \r
78                 FalloutHandler falloutHandler = new FalloutHandler()\r
79                 falloutHandler.preProcessRequest(mockExecution)\r
80 \r
81                 /* Initialize all the process request variables in this block */\r
82                 verify(mockExecution).setVariable("prefix","FH_")\r
83                 //verify(mockExecution).setVariable("getLayer3ServiceDetailsV1Response","")\r
84 \r
85                 //These variables are form the input Message to the BPMN\r
86                 verify(mockExecution).setVariable("FH_request_id","")\r
87                 verify(mockExecution).setVariable("FH_request_action","")\r
88                 verify(mockExecution).setVariable("FH_notification-url","")\r
89                 verify(mockExecution).setVariable("FH_mso-bpel-name","")\r
90                 verify(mockExecution).setVariable("FH_ErrorCode", "")\r
91                 verify(mockExecution).setVariable("FH_ErrorMessage", "")\r
92 \r
93                 verify(mockExecution).setVariable("FH_notification-url-Ok", false)\r
94                 verify(mockExecution).setVariable("FH_request_id-Ok", false)\r
95 \r
96                 //These variables are for Get Mso Aai Password Adapter\r
97                 verify(mockExecution).setVariable("FH_deliveryStatus", true)\r
98 \r
99                 //update Response Status to pending ...Adapter variables\r
100                 verify(mockExecution).setVariable("FH_updateResponseStatusPayload", null)\r
101                 verify(mockExecution).setVariable("FH_updateResponseStatusResponse", null)\r
102 \r
103                 //update Request Gamma ...Adapter variables\r
104                 verify(mockExecution).setVariable("FH_updateRequestGammaPayload", "")\r
105                 verify(mockExecution).setVariable("FH_updateRequestGammaResponse", null)\r
106                 verify(mockExecution).setVariable("FH_updateRequestGammaResponseCode", null)\r
107 \r
108                 //update Request Infra ...Adapter variables\r
109                 verify(mockExecution).setVariable("FH_updateRequestInfraPayload", "")\r
110                 verify(mockExecution).setVariable("FH_updateRequestInfraResponse", null)\r
111                 verify(mockExecution).setVariable("FH_updateRequestInfraResponseCode", null)\r
112 \r
113                 //assign False to success variable\r
114                 verify(mockExecution).setVariable("FH_success", true)\r
115 \r
116                 //Set notify status to Failed variable\r
117                 verify(mockExecution).setVariable("FH_NOTIFY_STATUS", "SUCCESS")\r
118 \r
119                 //Set DB update variable\r
120                 verify(mockExecution).setVariable("FH_updateRequestPayload", "")\r
121                 verify(mockExecution).setVariable("FH_updateRequestResponse", null)\r
122                 verify(mockExecution).setVariable("FH_updateRequestResponseCode", null)\r
123 \r
124                 //Auth variables\r
125                 verify(mockExecution).setVariable("BasicAuthHeaderValue","")\r
126 \r
127                 //Response variables\r
128                 verify(mockExecution).setVariable("FalloutHandlerResponse","")\r
129                 verify(mockExecution).setVariable("FH_ErrorResponse", null)\r
130                 verify(mockExecution).setVariable("FH_ResponseCode", "")\r
131 \r
132                 verify(mockExecution).setVariable("FH_request_id-Ok",true)\r
133                 verify(mockExecution).setVariable("FH_request_id","uCPE1020_STUW105_5002")\r
134                 verify(mockExecution).setVariable("FH_request_action","Layer3ServiceActivateRequest")\r
135                 verify(mockExecution).setVariable("FH_source","OMX")\r
136                 verify(mockExecution).setVariable("FH_ErrorCode","Some Error Code - Fallout Handler")\r
137                 verify(mockExecution).setVariable("FH_ErrorMessage","Some Error Message - Fallout Handler")\r
138 \r
139         }\r
140 \r
141         @Test\r
142         public void testpostProcessResponse(){\r
143 \r
144                 ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
145 \r
146                 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
147                 when(mockExecution.getVariable("FH_success")).thenReturn(false)\r
148 \r
149                 FalloutHandler falloutHandler = new FalloutHandler()\r
150                 falloutHandler.postProcessResponse(mockExecution)\r
151 \r
152                 // Capture the arguments to setVariable\r
153                 ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);\r
154                 ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);\r
155                 \r
156                 verify(mockExecution, times(4)).setVariable(captor1.capture(), captor2.capture())\r
157                 List<String> arg2List = captor2.getAllValues()\r
158                 String payloadResponseActual = arg2List.get(1)\r
159                 \r
160                 assertEquals(falloutHandlerResponse.replaceAll("\\s+", ""), payloadResponseActual.replaceAll("\\s+", ""))\r
161                 \r
162                 verify(mockExecution).setVariable("FH_ResponseCode","500")\r
163         }\r
164 \r
165         private String updateRequestPayload = """\r
166                         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">\r
167                         <soapenv:Header/>\r
168                         <soapenv:Body>\r
169                            <req:updateRequest>\r
170                                   <requestId>testReqId</requestId>\r
171                                   <lastModifiedBy>BPEL</lastModifiedBy>\r
172                                   <finalErrorMessage>ErrorMessage</finalErrorMessage>\r
173                                   <finalErrorCode>ErrorCode</finalErrorCode>\r
174                                   <status>FAILED</status>\r
175                                   <responseStatus>NotifyStatus</responseStatus>\r
176                            </req:updateRequest>\r
177                         </soapenv:Body>\r
178                  </soapenv:Envelope>\r
179                 """\r
180         \r
181                 @Test\r
182                 public void testupdateRequestPayload(){\r
183         \r
184                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
185                         when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")\r
186                         when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")\r
187                         when(mockExecution.getVariable("FH_ErrorCode")).thenReturn("ErrorCode")\r
188                         when(mockExecution.getVariable("FH_NOTIFY_STATUS")).thenReturn("NotifyStatus")\r
189         \r
190                         FalloutHandler falloutHandler = new FalloutHandler()\r
191                         falloutHandler.updateRequestPayload(mockExecution)\r
192                         \r
193                         // Capture the arguments to setVariable\r
194                         ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);\r
195                         ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);\r
196                         \r
197                         verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())\r
198                         List<String> arg2List = captor2.getAllValues()\r
199                         String payloadRequestActual = arg2List.get(0)\r
200                         \r
201                         assertEquals(updateRequestPayload.replaceAll("\\s+", ""), payloadRequestActual.replaceAll("\\s+", ""))\r
202                 }\r
203                 \r
204                 private String updateRequestInfraPayload = """\r
205                                                         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">\r
206                                                            <soapenv:Header/>\r
207                                                            <soapenv:Body>\r
208                                                               <req:updateInfraRequest>\r
209                                                                  <requestId>testReqId</requestId>\r
210                                                                  <lastModifiedBy>BPEL</lastModifiedBy>\r
211                                                                          <statusMessage>ErrorMessage</statusMessage>\r
212                                                                          <requestStatus>FAILED</requestStatus>\r
213                                                                          <progress>100</progress>\r
214                                                               </req:updateInfraRequest>\r
215                                                            </soapenv:Body>\r
216                                                         </soapenv:Envelope>\r
217                         """\r
218                 \r
219                         @Test\r
220                         public void testupdateRequestInfraPayload(){\r
221                 \r
222                                 ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
223                                 when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")\r
224                                 when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")\r
225                 \r
226                                 FalloutHandler falloutHandler = new FalloutHandler()\r
227                                 falloutHandler.updateRequestInfraPayload(mockExecution)\r
228                                 \r
229                                 // Capture the arguments to setVariable\r
230                                 ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);\r
231                                 ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);\r
232                                 \r
233                                 verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())\r
234                                 List<String> arg2List = captor2.getAllValues()\r
235                                 String payloadRequestActual = arg2List.get(0)\r
236                 \r
237                                 assertEquals(updateRequestInfraPayload.replaceAll("\\s+", ""), payloadRequestActual.replaceAll("\\s+", ""))\r
238                         }\r
239                         \r
240                         private String updateRequestGammaPayload = """\r
241                         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">\r
242                         <soapenv:Header/>\r
243                         <soapenv:Body>\r
244                            <req:updateRequest>\r
245                                   <requestId>testReqId</requestId>\r
246                                   <lastModifiedBy>BPEL</lastModifiedBy>\r
247                                   <finalErrorMessage>ErrorMessage</finalErrorMessage>\r
248                                   <finalErrorCode>ErrorCode</finalErrorCode>\r
249                                   <status>FAILED</status>\r
250                            </req:updateRequest>\r
251                         </soapenv:Body>\r
252                  </soapenv:Envelope>\r
253                 """\r
254                         \r
255                 @Test\r
256                 public void testupdateRequestGammaPayload(){\r
257         \r
258                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
259                         when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")\r
260                         when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")\r
261                         when(mockExecution.getVariable("FH_ErrorCode")).thenReturn("ErrorCode")\r
262                         when(mockExecution.getVariable("URN_mso_default_adapter_namespace")).thenReturn("http://org.openecomp.mso");\r
263 \r
264                         FalloutHandler falloutHandler = new FalloutHandler()\r
265                         falloutHandler.updateRequestGammaPayload(mockExecution)\r
266         \r
267                         // Capture the arguments to setVariable\r
268                         ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);\r
269                         ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);\r
270                         \r
271                         verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())\r
272                         List<String> arg2List = captor2.getAllValues()\r
273                         String payloadRequestActual = arg2List.get(0)\r
274                         \r
275                         assertEquals(updateRequestGammaPayload.replaceAll("\\s+", ""), payloadRequestActual.replaceAll("\\s+", ""))\r
276                 }\r
277         \r
278                 \r
279                 String updateResponseStatusPayload = """\r
280                         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">\r
281                         <soapenv:Header/>\r
282                         <soapenv:Body>\r
283                            <req:updateResponseStatus>\r
284                                   <requestId>testReqId</requestId>\r
285                                   <lastModifiedBy>BPEL</lastModifiedBy>\r
286                                   <responseStatus>SENDING_FINAL_NOTIFY</responseStatus>\r
287                            </req:updateResponseStatus>\r
288                         </soapenv:Body>\r
289                  </soapenv:Envelope>\r
290                 """\r
291                 \r
292                 @Test\r
293                 public void testupdateResponseStatusPayload(){\r
294         \r
295                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
296                         when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")\r
297 \r
298                         FalloutHandler falloutHandler = new FalloutHandler()\r
299                         falloutHandler.updateResponseStatusPayload(mockExecution)\r
300                         \r
301                         // Capture the arguments to setVariable\r
302                         ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);\r
303                         ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);\r
304                         \r
305                         verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())\r
306                         List<String> arg2List = captor2.getAllValues()\r
307                         String payloadResponseActual = arg2List.get(0)\r
308         \r
309                         assertEquals(updateResponseStatusPayload.replaceAll("\\s+", ""), payloadResponseActual.replaceAll("\\s+", ""))\r
310                 }\r
311 \r
312 }