junit mockito 拦截器

拦截器代码

java 复制代码
/**
 * @Title:出参ASE加密拦截器
 * @Description: 指定的url拦截,指定返回参数加密
 * @Author: luohaihua
 * @Date: 2024/06/18 16:37
 * @Version: 1.0
 */
@Slf4j
public class ResponseAseEncryptInterceptor  extends HandlerInterceptorAdapter  {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        return  true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        //该参数由客户随机生产再通过rsa公钥加密
        String pwdkey= httpServletRequest.getParameter("pwdkey");
        if (!validateResult(salt,o)){
            return;
        }
        String aseKey = RsaUtils.decrypt(pwdkey);
        encryptResult(aseKey, ((JsonResponse) o).getInfo());
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

mock代码

java 复制代码
public class TestResponseAseEncryptInterceptor extends MockBaseTest {
    @InjectMocks
    private ResponseAseEncryptInterceptor interceptor;

    @Mock
    private HttpServletRequest httpServletRequest;

    @Mock
    private HttpServletResponse httpServletResponse;;
    @Mock
    private ModelAndView modelAndView;;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }
    @Test
    public void testPostHandleWithPwdkey_result_success()  throws Exception{
        String pwdkey= "123321";
        JsonResponse jsonResponse = JsonResponse.success();
        CustInfoVo vo  = new CustInfoVo();
        vo.setName("张三");
        String rsaPwd = RsaEncryptUtil.encryptByPublicKey(pwdkey);
        jsonResponse.addInfo(vo);
        when(httpServletRequest.getParameter("pwdkey")).thenReturn(rsaPwd);
        interceptor.postHandle(httpServletRequest,httpServletResponse,jsonResponse,modelAndView);
        String resultName = AESUtils.encrypt("张三",pwdkey);
        Assert.assertEquals(resultName,vo.getName());
        Assert.assertEquals("张三",AESUtils.decrypt(vo.getName(),pwdkey));
    }
}
相关推荐
五岳2 小时前
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
java·mysql·爬坑
带刺的坐椅2 小时前
迈向 MCP 集群化:Solon AI (支持 Java8+)在解决 MCP 服务可扩展性上的探索与实践
java·ai·llm·solon·mcp
鼠爷ねずみ2 小时前
SpringCloud前后端整体开发流程-以及技术总结文章实时更新中
java·数据库·后端·spring·spring cloud
代码or搬砖3 小时前
String字符串
android·java·开发语言
leo__5203 小时前
基于两步成像算法的聚束模式SAR MATLAB实现
开发语言·算法·matlab
Macbethad4 小时前
自动化测试技术报告
开发语言·lua
不会画画的画师4 小时前
Go开发指南:io/ioutil包应用和迁移指南
开发语言·后端·golang
2503_928411564 小时前
12.22 wxml语法
开发语言·前端·javascript
AM越.4 小时前
Java设计模式详解--装饰器设计模式(含uml图)
java·设计模式·uml