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测试服务器部分说明(完整运行服务器)
综合以上,就应该已经很清楚了,上面的代码部分就不一一说明了,欢迎下方留言
SpringBoot单元测试携带Cookie的更多相关文章
- Glide请求图片能携带Cookie的哟!
在Web编程中我们都很熟知一个概念,当有了seesion登录状态时,你可以访问一些资源但如果你没有登录的话很多资源是无法访问的. 在android的WebApi中当然一样拥有这个概念.比如,用户的头像 ...
- 携带cookie进行数据请求
前端进行数据请求有:普通的ajax(json)请求,jsop跨域请求,cors跨域请求,fetch请求...PC端这些请求方式中,普通的ajax(json)请求和jsop跨域请求是默认携带cookie ...
- iOS-WKWebView携带cookie发送http请求,cookie失效
发送请求代码: NSString *testUrl = @"http://10.22.122.7:8081/test2_action/view_index"; NSURL *url ...
- python urllib2模块携带cookie
今天干活遇到一个事.有一些网站的一些操作非得要求你登陆才能做,比如新浪微博,你要随便看看吧,不行,非得让你登陆了才能看,再比如一些用户操作,像更改自己的资料啦,个人的隐私啦巴拉巴拉的.想抓取这样的ur ...
- ajax 跨域携带COOKIE
这个问题属于Ajax跨域携带Cookie的问题,找了一篇博文的解决方案. 原生ajax请求方式: var xhr = new XMLHttpRequest(); xhr.open("POST ...
- fetch默认不携带cookie
最近在使用fetch向服务器发送请求,过程中的体会和遇到的问题在这里记录一下. fetch返回的是一个Promise对象,我们可以对返回的结果做进一步的处理,这是与传统ajax的一个区别. 简单的请求 ...
- 关于 Angular 跨域请求携带 Cookie 的问题
在前端开发调试接口的时候都会遇到跨域请求的问题.传统的方式是使用 Nginx 反向代理解决跨域.比如所有接口都在 a.com 的域下,通过 Nginx 将所有请求代理到 a.com 的域下即可. 使用 ...
- vue踩坑(二):跨域以及携带cookie
最近后台需求要在请求的时候传cooki给后台,正常情况下拿到cookie后存在cookie里,同域名下是会自己带到请求头里的,但是因为要在本地调试,那么问题就来了,localhost:8080下面的c ...
- vue + spring boot + spring security 前后端分离 携带 Cookie 登录实现 只写了个登录
最近想弄一下vue 所以就自己给自己找坑入 结果弄的满身是伤 哈哈哈 首先我说下 前后端分离 跨域请求 我在网上找了一些 可是都是针对于 spring boot 的 我自己还有 securi ...
随机推荐
- Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪使用指南
分布式跟踪允许您跟踪分布式系统中的请求.本文通过了解如何使用 Spring Cloud Sleuth 和 Zipkin 来做到这一点. 对于一个做所有事情的大型应用程序(我们通常将其称为单体应用程序) ...
- 【C# 异常处理】StackTrace 堆栈跟踪
作用 在使用.NET编写的代码在debug时很容易进行排查和定位问题,一旦项目上线并出现问题的话那么只能依靠系统日志来进行问题排查和定位,但当项目复杂时,即各种方法间相互调用将导致要获取具体的出错方法 ...
- 【C# 程序集】.net core 3.0中动态卸载|卸载程序集
原文:https://docs.microsoft.com/zh-cn/dotnet/core/dependency-loading/understanding-assemblyloadcontext ...
- elasticsearch7.8.0,kibana7.8.0安装
目录 Windows下安装Elasticsearch Linux下安装Elasticsearch docker下安装Elasticsearch Kibana安装 chrome ElasticSearc ...
- linux 平台实现 web 服务器的自动化发布 (纯shell 版本,存在ssh 不能自动退出问题,待解决)
转至:https://www.cnblogs.com/vmsky/p/13824172.html 背景说明 1.集团OA系统上线,web App 部署在6台服务器中,因项目初期,每次更新都需要进行大量 ...
- docker ——从docker容器的内部,连接本机的mysql
所以我有一个Nginx运行在一个docker容器,我有一个mysql运行在localhost,我想连接到我的Nginx内的MySql. MySql在localhost上运行,并且不将端口暴露给外部世界 ...
- WPF优秀组件推荐之MahApps
概述 MahApps是一套基于WPF的界面组件,通过该组件,可以使用较小的开发成本实现一个相对很好的界面效果. 官方网站:MahApps.Metro - Home 开源代码:MahApps · Git ...
- .NET 6: New DateOnly and TimeOnly strcuts
Background and Motivation .NET 目前有用于处理日期和时间的DateTime和DateTimeOffset.但在许多情况下,用户需要处理日期而根本不关心时间部分,也存在需要 ...
- 数字逻辑实践6-> 从数字逻辑到计算机组成 | 逻辑元件总结与注意事项
00 一些前言 数字逻辑是计算机组成与体系结构的前导课,但是在两者的衔接之间并没有那么流畅,比如对面向硬件电路的设计思路缺乏.这篇总结是在数字逻辑和计组体系结构的衔接阶段进行的. 虽然这篇文是两门课的 ...
- Dcate Admin 的使用
1:laravel安装框架 composer create-project --prefer-dist laravel/laravel 项目名称 2:配置数据库 DB_CONNECTION=mysql ...