zoukankan      html  css  js  c++  java
  • SpringBoot单元测试携带Cookie

    由于我SpringBoot项目,集成了SpringSecurity,而Security框架使用Redis存储Session,所以,这里列出几个关键的类

    org.springframework.session.data.redis.RedisIndexedSessionRepository:解析请求携带的Cookie的Repository类
    org.springframework.session.web.http.DefaultCookieSerializer:默认提取Cookie序列化的类;org.springframework.session.web.http.DefaultCookieSerializer#readCookieValues看这个方法,就能看出解析的是 Cookie Header

    这是使用示例:

    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)  //这里是说明:以随机端口进行服务器的完整启动(这样请求就会经过过滤器、拦截器等前置处理)
    @Slf4j
    class UploadFileApiControllerTest {
    
        @Resource
        private TestRestTemplate testRestTemplate;
    
        private HttpHeaders headers;
    
        private List<String> cookies;
    
        @BeforeEach
        void login() throws Exception {
    
            ResponseEntity<String> exchange = testRestTemplate.exchange("/user/login", HttpMethod.POST, new HttpEntity<>("{json内容}"), String.class);
            System.out.println(exchange.getBody());
    
            headers = exchange.getHeaders();
            cookies = exchange.getHeaders().get("Set-Cookie");
    
        }
    
    
        @Test
        void initializedUploadFileInfo() throws Exception {
    
    
            File file = ResourceUtils.getFile("classpath:TestLinuxVideo.mp4");
    
            InitializedUploadFileInfoDTO initializedUploadFileInfoDTO = new InitializedUploadFileInfoDTO();
            initializedUploadFileInfoDTO.setFileMD5(DigestUtils.md5DigestAsHex(new FileInputStream(file)));
            initializedUploadFileInfoDTO.setFilename(file.getName());
            initializedUploadFileInfoDTO.setTotalBlockLength(1);
            initializedUploadFileInfoDTO.setTotalByteSize(file.length());
    
            String s = new Gson().toJson(initializedUploadFileInfoDTO);
    
            log.info("文件初始化信息,请求内容:{}",s);
    
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.putAll(headers);
            httpHeaders.add("Cookie",cookies.get(0));  //这里设置base64解码之前的字符串,因为Security框架会进行解码判断是否登录的
    
            HttpEntity<String> stringHttpEntity = new HttpEntity<>(s,httpHeaders);
    
            BaseResponseDataVo baseResponseDataVo = testRestTemplate.postForObject("/upload/init", stringHttpEntity, BaseResponseDataVo.class);
            System.out.println(baseResponseDataVo);
    
    
        }
    
    }

    这里看下SpringBoot测试部分的文档:

    SpringBoot测试服务器部分说明(完整运行服务器)

    TestRestTemplate类文档的部分说明

    综合以上,就应该已经很清楚了,上面的代码部分就不一一说明了,欢迎下方留言

    复制请注明出处,在世界中挣扎的灰太狼
  • 相关阅读:
    Haskell语言学习笔记(54)Data.Set
    Haskell语言学习笔记(53)Data.Sequence
    正则表达式(Java,C#,C++)
    Haskell语言学习笔记(52)正则表达式
    Haskell语言学习笔记(51)Comonad
    最大获利
    最小生成树
    PIGS
    三维偏序
    <noip2017>列队
  • 原文地址:https://www.cnblogs.com/XingXiaoMeng/p/13855231.html
Copyright © 2011-2022 走看看