单元测试案例

@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 &#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值