/*-
* ============LICENSE_START=======================================================
* OPENECOMP - MSO
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
*/
package org.openecomp.mso.bpmn.common.scripts
import org.junit.runner.RunWith;
import static org.mockito.Mockito.*
import static org.junit.Assert.*;
import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor;
import org.mockito.MockitoAnnotations
import org.mockito.runners.MockitoJUnitRunner
import org.openecomp.mso.bpmn.common.scripts.MsoUtils;
import org.openecomp.mso.bpmn.common.scripts.FalloutHandler;
@RunWith(MockitoJUnitRunner.class)
class FalloutHandlerTest {
public MsoUtils utils = new MsoUtils()
@Before
public void init() {
MockitoAnnotations.initMocks(this)
}
private String falloutHandlerRequest = """
uCPE1020_STUW105_5002
Layer3ServiceActivateRequest
CANCEL
OMX
10205000
1
Some Error Message - Fallout Handler
Some Error Code - Fallout Handler
Some Source System Error Code- Fallout Handler
"""
private String falloutHandlerResponse = """
Fallout Handler Failed
"""
@Test
public void testPreProcessRequest() {
ExecutionEntity mockExecution = mock(ExecutionEntity.class)
when(mockExecution.getVariable("FalloutHandlerRequest")).thenReturn(falloutHandlerRequest)
when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC");
when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7");
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.preProcessRequest(mockExecution)
/* Initialize all the process request variables in this block */
verify(mockExecution).setVariable("prefix","FH_")
//verify(mockExecution).setVariable("getLayer3ServiceDetailsV1Response","")
//These variables are form the input Message to the BPMN
verify(mockExecution).setVariable("FH_request_id","")
verify(mockExecution).setVariable("FH_request_action","")
verify(mockExecution).setVariable("FH_notification-url","")
verify(mockExecution).setVariable("FH_mso-bpel-name","")
verify(mockExecution).setVariable("FH_ErrorCode", "")
verify(mockExecution).setVariable("FH_ErrorMessage", "")
verify(mockExecution).setVariable("FH_notification-url-Ok", false)
verify(mockExecution).setVariable("FH_request_id-Ok", false)
//These variables are for Get Mso Aai Password Adapter
verify(mockExecution).setVariable("FH_deliveryStatus", true)
//update Response Status to pending ...Adapter variables
verify(mockExecution).setVariable("FH_updateResponseStatusPayload", null)
verify(mockExecution).setVariable("FH_updateResponseStatusResponse", null)
//update Request Gamma ...Adapter variables
verify(mockExecution).setVariable("FH_updateRequestGammaPayload", "")
verify(mockExecution).setVariable("FH_updateRequestGammaResponse", null)
verify(mockExecution).setVariable("FH_updateRequestGammaResponseCode", null)
//update Request Infra ...Adapter variables
verify(mockExecution).setVariable("FH_updateRequestInfraPayload", "")
verify(mockExecution).setVariable("FH_updateRequestInfraResponse", null)
verify(mockExecution).setVariable("FH_updateRequestInfraResponseCode", null)
//assign False to success variable
verify(mockExecution).setVariable("FH_success", true)
//Set notify status to Failed variable
verify(mockExecution).setVariable("FH_NOTIFY_STATUS", "SUCCESS")
//Set DB update variable
verify(mockExecution).setVariable("FH_updateRequestPayload", "")
verify(mockExecution).setVariable("FH_updateRequestResponse", null)
verify(mockExecution).setVariable("FH_updateRequestResponseCode", null)
//Auth variables
verify(mockExecution).setVariable("BasicAuthHeaderValue","")
//Response variables
verify(mockExecution).setVariable("FalloutHandlerResponse","")
verify(mockExecution).setVariable("FH_ErrorResponse", null)
verify(mockExecution).setVariable("FH_ResponseCode", "")
verify(mockExecution).setVariable("FH_request_id-Ok",true)
verify(mockExecution).setVariable("FH_request_id","uCPE1020_STUW105_5002")
verify(mockExecution).setVariable("FH_request_action","Layer3ServiceActivateRequest")
verify(mockExecution).setVariable("FH_source","OMX")
verify(mockExecution).setVariable("FH_ErrorCode","Some Error Code - Fallout Handler")
verify(mockExecution).setVariable("FH_ErrorMessage","Some Error Message - Fallout Handler")
}
@Test
public void testpostProcessResponse(){
ExecutionEntity mockExecution = mock(ExecutionEntity.class)
when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
when(mockExecution.getVariable("FH_success")).thenReturn(false)
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.postProcessResponse(mockExecution)
// Capture the arguments to setVariable
ArgumentCaptor captor1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor captor2 = ArgumentCaptor.forClass(String.class);
verify(mockExecution, times(4)).setVariable(captor1.capture(), captor2.capture())
List arg2List = captor2.getAllValues()
String payloadResponseActual = arg2List.get(1)
assertEquals(falloutHandlerResponse.replaceAll("\\s+", ""), payloadResponseActual.replaceAll("\\s+", ""))
verify(mockExecution).setVariable("FH_ResponseCode","500")
}
private String updateRequestPayload = """
testReqId
BPEL
ErrorMessage
ErrorCode
FAILED
NotifyStatus
"""
@Test
public void testupdateRequestPayload(){
ExecutionEntity mockExecution = mock(ExecutionEntity.class)
when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")
when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")
when(mockExecution.getVariable("FH_ErrorCode")).thenReturn("ErrorCode")
when(mockExecution.getVariable("FH_NOTIFY_STATUS")).thenReturn("NotifyStatus")
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.updateRequestPayload(mockExecution)
// Capture the arguments to setVariable
ArgumentCaptor captor1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor captor2 = ArgumentCaptor.forClass(String.class);
verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())
List arg2List = captor2.getAllValues()
String payloadRequestActual = arg2List.get(0)
assertEquals(updateRequestPayload.replaceAll("\\s+", ""), payloadRequestActual.replaceAll("\\s+", ""))
}
private String updateRequestInfraPayload = """
testReqId
BPEL
ErrorMessage
FAILED
"""
@Test
public void testupdateRequestInfraPayload(){
ExecutionEntity mockExecution = mock(ExecutionEntity.class)
when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")
when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.updateRequestInfraPayload(mockExecution)
// Capture the arguments to setVariable
ArgumentCaptor captor1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor captor2 = ArgumentCaptor.forClass(String.class);
verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())
List arg2List = captor2.getAllValues()
String payloadRequestActual = arg2List.get(0)
assertEquals(updateRequestInfraPayload.replaceAll("\\s+", ""), payloadRequestActual.replaceAll("\\s+", ""))
}
private String updateRequestGammaPayload = """
testReqId
BPEL
ErrorMessage
ErrorCode
FAILED
"""
@Test
public void testupdateRequestGammaPayload(){
ExecutionEntity mockExecution = mock(ExecutionEntity.class)
when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")
when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")
when(mockExecution.getVariable("FH_ErrorCode")).thenReturn("ErrorCode")
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.updateRequestGammaPayload(mockExecution)
// Capture the arguments to setVariable
ArgumentCaptor captor1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor captor2 = ArgumentCaptor.forClass(String.class);
verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())
List arg2List = captor2.getAllValues()
String payloadRequestActual = arg2List.get(0)
assertEquals(updateRequestGammaPayload.replaceAll("\\s+", ""), payloadRequestActual.replaceAll("\\s+", ""))
}
String updateResponseStatusPayload = """
testReqId
BPEL
SENDING_FINAL_NOTIFY
"""
@Test
public void testupdateResponseStatusPayload(){
ExecutionEntity mockExecution = mock(ExecutionEntity.class)
when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.updateResponseStatusPayload(mockExecution)
// Capture the arguments to setVariable
ArgumentCaptor captor1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor captor2 = ArgumentCaptor.forClass(String.class);
verify(mockExecution, times(1)).setVariable(captor1.capture(), captor2.capture())
List arg2List = captor2.getAllValues()
String payloadResponseActual = arg2List.get(0)
assertEquals(updateResponseStatusPayload.replaceAll("\\s+", ""), payloadResponseActual.replaceAll("\\s+", ""))
}
}