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));
    }
}
相关推荐
喵了几个咪4 分钟前
Golang微服务框架Kratos实现Thrift服务
开发语言·微服务·golang
DolphinScheduler社区5 分钟前
图解 Apache DolphinScheduler 如何配置飞书告警
java·大数据·开源·飞书·告警·任务调度·海豚调度
Han.miracle8 分钟前
JavaEE —— 网路编程 Socket套接字
java·java-ee
j***894614 分钟前
Spring Boot整合Redisson的两种方式
java·spring boot·后端
Laravel技术社区14 分钟前
php 读取视频流(mp4视频文件),快速读取视频解决方案(案例及配置)
开发语言·php·音视频
q***965816 分钟前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
ytttr87317 分钟前
基于MATLAB实现晶体共晶凝固模拟
开发语言·算法·matlab
今天有个Bug18 分钟前
Java 读取RTSP、RTMP等网络流、图像、视频指南,易于理解,方便使用
java·推流拉流·javacv·图片视频处理
JavaGuide25 分钟前
Spring Boot 4.0 正式发布,真学不动了!
java·spring boot
90后小陈老师34 分钟前
用户管理系统 03 搭建基本结构 | Java新手实战 | 最小架构用户管理系统(SpringBoot+Vue3)
java·spring boot·架构