@PrepareForTest({ServiceLocator.class, SessionUtil.class})
public class SDKSecondQuickSignSendSmsControllerTest
{
@Rule
public PowerMockRule rule = new PowerMockRule();
@Mock
private HttpServletRequest request;
/**
* 商业委托二次支付发送短信 service
*/
@Mock
private SDKSecondQuickSignSendSmsService sDKSecondQuickSignSendSmsService;
@Mock
//PBE加密
private PBEEncryptService pbeService;
//被测试的类
@InjectMocks
SDKSecondQuickSignSendSmsController sdkSecondQuickSignSendSmsController;
@Before
public void setUp () throws Exception {
System.out.println("start***************************************************");
}
@After
public void tearDown () throws Exception {
System.out.println("end***************************************************");
}
/**
* 1.第一步:解密(解密数据为空!)return
*
* @throws Exception
*/
@Test
public void secondQuickSignSendSms_encryptnull () throws Exception {
SDK2Response result = new SDK2Response();
//第一步:解密
long sTime = System.currentTimeMillis();//系统时间
String method = "SDKSecondQuickSignSendSmsController.secondQuickSignSendSms";//方法名
String encryptSimulate = "";
when(request.getParameter(any(String.class))).thenReturn(encryptSimulate); //模拟[入参]
String encrypt = request.getParameter(CashierSDKConstants.SDK_DATA_KEY);//入参
SDKSessionData sessionDataSimulate = new SDKSessionData();
PowerMockito.mockStatic(SessionUtil.class);
when(SessionUtil.getSessionData()).thenReturn(sessionDataSimulate);// 模拟[获取会话信息]
SDKSessionData sessionData = SessionUtil.getSessionData();// 获取会话信息
CommonParamsIntf commonParams = new CommonParams();
if (StringUtil.isBlank(encrypt) || "(null)".equals(encrypt.trim())) {
result.setBizResult(CashierSDKErrorCode.FAIL);
result.fail(CashierSDKErrorCode.ERRORCODE_9998, "解密数据为空!");
}
SDK2Response resultEnd = new SDK2Response();
resultEnd = sdkSecondQuickSignSendSmsController.secondQuickSignSendSms(request);
Assert.assertEquals(result.getResponseCode(), resultEnd.getResponseCode());
Assert.assertEquals(result.getResponseMsg(), resultEnd.getResponseMsg());
}
/**
* 1.第一步:解密(解密数据不为空!)
* 2.第二步:参数校验(参数校验失败)return
*
* @throws Exception
*/
@Test
public void secondQuickSignSendSms_checkResultFail () throws Exception {
SDK2Response result = new SDK2Response();
//第一步:解密
long sTime = System.currentTimeMillis();//系统时间
String method = "SDKSecondQuickSignSendSmsController.secondQuickSignSendSms";//方法名
String encryptSimulate = "{cashierCode:'null', payOrderId:'1808013708000000393', orderType:'00', smsType:'SVS', payMode:[PayMode{providerCode:'JSUPWK', payType:'null', payChannelCode:'GZB', payMoney:2000, rcsCode:'GZB_CREDIT_QUICKPAYMENT_JSUPWK', quickAuthId:null, quickAuthType:'', quickPaySignId:null, isSecondQuickPay:false, payTypeCode:'CREDIT_QUICKPAYMENT', bankName:'null', quickPayScene:'QuickSignPay', activityCode:'null', salesId:'null', couponNumber:'null', authCode:'null', randomSales:false, rate:'null', instalment:'null', repayWay:'null', repayterm:'null', loanTerm:'null', personLoanId:null, signCode:'null', projectCode:'null', hasRandomSales:'null', personalLoanInfo:null, payChannelIdx:'null', repaymentType:'null', repaymentDay:'null', rateType:'null', quotaType:'null', couponInfos:null}], bankCardInfo:BankCardInfo [cardHolderName:, certNo:, certType:null, cardNo:**0020, cardType:2, cvv:, mobileNo:, expYear:, expMonth:, firstQuickPhone:, bankName:广州银行, quickAuthId:null], merchantOrderIds:[], payModeKey:'null', installment:'null'}";
when(request.getParameter(any(String.class))).thenReturn(encryptSimulate); //模拟[入参]
String encrypt = request.getParameter(CashierSDKConstants.SDK_DATA_KEY);//入参
SDKSessionData sessionDataSimulate = new SDKSessionData();
sessionDataSimulate.setClientKey("111");
PowerMockito.mockStatic(SessionUtil.class);
when(SessionUtil.getSessionData()).thenReturn(sessionDataSimulate);// 模拟[获取会话信息]
SDKSessionData sessionData = SessionUtil.getSessionData();// 获取会话信息
CommonParamsIntf commonParams = new CommonParams();
String clientKey = sessionData.getClientKey();
String dataStr = "";
when(pbeService.decrypt(any(String.class), any(String.class))).thenReturn(dataStr);
//第二步:参数校验
SDKGenericResult<SdkSendSmsInfoDto> checkResultSimulate = new SDKGenericResult<SdkSendSmsInfoDto>();//模拟参数校验返回结果
checkResultSimulate.fail("1234", "参数校验失败");
when(sDKSecondQuickSignSendSmsService.checkSecondQuickSignSendSmsParam(any(CommonParamsIntf.class), any(SdkSendSmsInfoDto.class), any(SDKSessionData.class))).thenReturn(checkResultSimulate);
SDK2Response resultEnd = new SDK2Response();
resultEnd = sdkSecondQuickSignSendSmsController.secondQuickSignSendSms(request);
Assert.assertEquals(checkResultSimulate.getResponseCode(), resultEnd.getResponseCode());
Assert.assertEquals(checkResultSimulate.getResponseMsg(), resultEnd.getResponseMsg());
}
/**
* 1.第一步:解密(解密数据不为空!)
* 2.第二步:参数校验(参数校验成功)
* 3.第三步:发送短信业务处理(处理失败)return
*
* @throws Exception
*/
@Test
public void secondQuickSignSendSms_sendSmsResultFail () throws Exception {
SDK2Response result = new SDK2Response();
//第一步:解密
long sTime = System.currentTimeMillis();//系统时间
String method = "SDKSecondQuickSignSendSmsController.secondQuickSignSendSms";//方法名
String encryptSimulate = "{cashierCode:'null', payOrderId:'1808013708000000393', orderType:'00', smsType:'SVS', payMode:[PayMode{providerCode:'JSUPWK', payType:'null', payChannelCode:'GZB', payMoney:2000, rcsCode:'GZB_CREDIT_QUICKPAYMENT_JSUPWK', quickAuthId:null, quickAuthType:'', quickPaySignId:null, isSecondQuickPay:false, payTypeCode:'CREDIT_QUICKPAYMENT', bankName:'null', quickPayScene:'QuickSignPay', activityCode:'null', salesId:'null', couponNumber:'null', authCode:'null', randomSales:false, rate:'null', instalment:'null', repayWay:'null', repayterm:'null', loanTerm:'null', personLoanId:null, signCode:'null', projectCode:'null', hasRandomSales:'null', personalLoanInfo:null, payChannelIdx:'null', repaymentType:'null', repaymentDay:'null', rateType:'null', quotaType:'null', couponInfos:null}], bankCardInfo:BankCardInfo [cardHolderName:, certNo:, certType:null, cardNo:**0020, cardType:2, cvv:, mobileNo:, expYear:, expMonth:, firstQuickPhone:, bankName:广州银行, quickAuthId:null], merchantOrderIds:[], payModeKey:'null', installment:'null'}";
when(request.getParameter(any(String.class))).thenReturn(encryptSimulate); //模拟[入参]
String encrypt = request.getParameter(CashierSDKConstants.SDK_DATA_KEY);//入参
SDKSessionData sessionDataSimulate = new SDKSessionData();
sessionDataSimulate.setClientKey("111");
PowerMockito.mockStatic(SessionUtil.class);
when(SessionUtil.getSessionData()).thenReturn(sessionDataSimulate);// 模拟[获取会话信息]
SDKSessionData sessionData = SessionUtil.getSessionData();// 获取会话信息
CommonParamsIntf commonParams = new CommonParams();
String clientKey = sessionData.getClientKey();
String dataStr = "";
when(pbeService.decrypt(any(String.class), any(String.class))).thenReturn(dataStr);
//第二步:参数校验
SDKGenericResult<SdkSendSmsInfoDto> checkResultSimulate = new SDKGenericResult<SdkSendSmsInfoDto>();//模拟参数校验返回结果
when(sDKSecondQuickSignSendSmsService.checkSecondQuickSignSendSmsParam(any(CommonParamsIntf.class), any(SdkSendSmsInfoDto.class), any(SDKSessionData.class))).thenReturn(checkResultSimulate);
//第三步:发送短信业务处理
SDKGenericResult<SDKSecondQuickSmsResponse> sendSmsResultSimulate = new SDKGenericResult<SDKSecondQuickSmsResponse>();//模拟业务处理返回结果
sendSmsResultSimulate.fail("1234", "业务处理失败 ");
when(sDKSecondQuickSignSendSmsService.dealSecondQuickSignSendSms(any(HttpServletRequest.class), any(SdkSendSmsInfoDto.class), any(SDKSessionData.class))).thenReturn(sendSmsResultSimulate);
if (!sendSmsResultSimulate.isSuccess()) {
result.fail(sendSmsResultSimulate.getResponseCode(),sendSmsResultSimulate.getResponseMsg());
}
SDK2Response resultEnd = new SDK2Response();
resultEnd = sdkSecondQuickSignSendSmsController.secondQuickSignSendSms(request);
Assert.assertEquals(result.getResponseCode(), resultEnd.getResponseCode());
}
/**
* 1.第一步:解密(解密数据不为空!)
* 2.第二步:参数校验(参数校验成功)
* 3.第三步:发送短信业务处理(处理成功)return
*
* @throws Exception
*/
@Test
public void secondQuickSignSendSms_sendSmsResultSuccess () throws Exception {
SDK2Response result = new SDK2Response();
//第一步:解密
long sTime = System.currentTimeMillis();//系统时间
String method = "SDKSecondQuickSignSendSmsController.secondQuickSignSendSms";//方法名
String encryptSimulate = "{cashierCode:'null', payOrderId:'1808013708000000393', orderType:'00', smsType:'SVS', payMode:[PayMode{providerCode:'JSUPWK', payType:'null', payChannelCode:'GZB', payMoney:2000, rcsCode:'GZB_CREDIT_QUICKPAYMENT_JSUPWK', quickAuthId:null, quickAuthType:'', quickPaySignId:null, isSecondQuickPay:false, payTypeCode:'CREDIT_QUICKPAYMENT', bankName:'null', quickPayScene:'QuickSignPay', activityCode:'null', salesId:'null', couponNumber:'null', authCode:'null', randomSales:false, rate:'null', instalment:'null', repayWay:'null', repayterm:'null', loanTerm:'null', personLoanId:null, signCode:'null', projectCode:'null', hasRandomSales:'null', personalLoanInfo:null, payChannelIdx:'null', repaymentType:'null', repaymentDay:'null', rateType:'null', quotaType:'null', couponInfos:null}], bankCardInfo:BankCardInfo [cardHolderName:, certNo:, certType:null, cardNo:**0020, cardType:2, cvv:, mobileNo:, expYear:, expMonth:, firstQuickPhone:, bankName:广州银行, quickAuthId:null], merchantOrderIds:[], payModeKey:'null', installment:'null'}";
when(request.getParameter(any(String.class))).thenReturn(encryptSimulate); //模拟[入参]
String encrypt = request.getParameter(CashierSDKConstants.SDK_DATA_KEY);//入参
SDKSessionData sessionDataSimulate = new SDKSessionData();
sessionDataSimulate.setClientKey("111");
PowerMockito.mockStatic(SessionUtil.class);
when(SessionUtil.getSessionData()).thenReturn(sessionDataSimulate);// 模拟[获取会话信息]
SDKSessionData sessionData = SessionUtil.getSessionData();// 获取会话信息
CommonParamsIntf commonParams = new CommonParams();
String clientKey = sessionData.getClientKey();
String dataStr = "";
when(pbeService.decrypt(any(String.class), any(String.class))).thenReturn(dataStr);
//第二步:参数校验
SDKGenericResult<SdkSendSmsInfoDto> checkResultSimulate = new SDKGenericResult<SdkSendSmsInfoDto>();//模拟参数校验返回结果
when(sDKSecondQuickSignSendSmsService.checkSecondQuickSignSendSmsParam(any(CommonParamsIntf.class), any(SdkSendSmsInfoDto.class), any(SDKSessionData.class))).thenReturn(checkResultSimulate);
//第三步:发送短信业务处理
SDKGenericResult<SDKSecondQuickSmsResponse> sendSmsResultSimulate = new SDKGenericResult<SDKSecondQuickSmsResponse>();//模拟业务处理返回结果
when(sDKSecondQuickSignSendSmsService.dealSecondQuickSignSendSms(any(HttpServletRequest.class), any(SdkSendSmsInfoDto.class), any(SDKSessionData.class))).thenReturn(sendSmsResultSimulate);
//第四步:组装结果并且返回
SDKSecondQuickSmsResponse sdksecondquicksmsresponse = sendSmsResultSimulate.getObject();
String contentStr = JsonUtil.object2Json(sdksecondquicksmsresponse);
result.setResponseData(pbeService.encrypt(contentStr, sessionData.getClientKey()));
SDK2Response resultEnd = new SDK2Response();
resultEnd = sdkSecondQuickSignSendSmsController.secondQuickSignSendSms(request);
Assert.assertEquals(result.getResponseCode(), resultEnd.getResponseCode());
}
}
@PrepareForTest({SDKSecondQuickSignSendSmsServiceImpl.class, RedisUtil.class})
public class SDKSecondQuickSignSendSmsServiceImplTest
{
Method method_regroupBankCardInfo = null;
@Rule
public PowerMockRule rule = new PowerMockRule();
//@Mock
//private HttpServletRequest request;
private MockHttpServletRequest request;
private MockHttpServletResponse response;
@Mock
private SDKSecondQuickSignSendSmsService sdkSecondQuickSignSendSmsService;
@Mock
private QpsSystemRsfService qpsSystemRsfService;
@Mock
private SmsService smsService;
@Mock
private PaymentsService paymentsService;
@Mock
private SecurityValidateService securityValidateService;
@Mock
private ErrorCodeService errorCodeService;
@Mock
private EmsRsfClientService emsRsfClientService;
@Mock
private CocsClientRsfService cocsClientRsfService;
@Mock
private RebuildPayMode rebuildPayMode;
//被测试的类
@InjectMocks
private SDKSecondQuickSignSendSmsServiceImpl sdkSecondQuickSignSendSmsServiceImpl;
private SDKGenericResult<BankCardInfo> bankCardInfoSDKGenericResult;
@Before
public void init () {
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
request.setSession(new MockHttpSession());
System.out.println("start*****************************");
}
@After
public void tearDown () throws Exception {
System.out.println("end*****************************");
}
/**
* 发送短信method[SecondQuickSignSendSms] 参数校验-失败
*
* @throws Exception
*/
@Test
public void checkSecondQuickSignSendSmsParam_requestResultfail () throws Exception {
SDKGenericResult<SdkSendSmsInfoDto> result = new SDKGenericResult<SdkSendSmsInfoDto>();
result.fail("1243", "校验入参失败");
when(sdkSecondQuickSignSendSmsService.checkSdkSendSmsInfo(any(SdkSendSmsInfoDto.class))).thenReturn(result);
CommonParamsIntf commonParamsSimulate = new CommonParams();
SdkSendSmsInfoDto sdkSendSmsInfoDtoSimulate = new SdkSendSmsInfoDto();
sdkSendSmsInfoDtoSimulate.setPayOrderId("123456789");
SDKSessionData sessionDataSimulate = new SDKSessionData();
EppUser user = new EppUser();
user.setAccountNo("100");
sessionDataSimulate.setUser(user);
SDKGenericResult<SdkSendSmsInfoDto> resultEnd = new SDKGenericResult<SdkSendSmsInfoDto>();
resultEnd = sdkSecondQuickSignSendSmsServiceImpl.checkSecondQuickSignSendSmsParam(commonParamsSimulate, sdkSendSmsInfoDtoSimulate, sessionDataSimulate);
Assert.assertEquals(result.getResponseCode(), resultEnd.getResponseCode());
Assert.assertEquals(result.getResponseMsg(), resultEnd.getResponseMsg());
}
/**
* 发送短信method[SecondQuickSignSendSms] 参数校验-成功
*
* @throws Exception
*/
@Test
public void checkSecondQuickSignSendSmsParam_requestResultsuccess () throws Exception {
SDKGenericResult<SdkSendSmsInfoDto> result = new SDKGenericResult<SdkSendSmsInfoDto>();
when(sdkSecondQuickSignSendSmsService.checkSdkSendSmsInfo(any(SdkSendSmsInfoDto.class))).thenReturn(result);
CommonParamsIntf commonParamsSimulate &#