spring-boot - 如何模拟使用 OAUTH2 的测试 REST 控制器
问题描述
如何测试使用 Oauth2(客户端)的 REST 控制器?我需要模拟 oauth2 并且我被卡住了。任何帮助,将不胜感激。
解决方案
希望这个答案可能会有所帮助。
实际上,当使用带有 a 的 OAuth2 时ResourceServerConfiguration
,您将拥有一个无状态安全性,这将消除事先模拟用户的任何努力。
模拟用户应该做的是:
- 创建一个 TestOnly 加载的 ResourceServerConfiguration ,它以这种方式覆盖您的标准配置:
public class TestConfiguration extends ResourceServerConfiguration {
@Override
public void configure(ResourceServerSecurityConfigurer res) {
res.stateless(false);
super.configure(resources);
}
}
- 添加
@WithMockUser
到测试:
@Test
@WithMockUser(username ="username_admin", authorities = {"I_AM_LEGEND"})
public void myTestWithUser() throws Exception {
this.mvc.perform(get("/getUsername")).andExpect(content().text().contains("username_admin"));
}
@Test
public void myTestWithNoUser() throws Exception {
this.mvc.perform(get("/getUsername")).andExpect(status().isUnauthorized());
}
注意:我从内存中编写了代码
推荐阅读
- javascript - 从 API 读取和解析 JSON 响应
- android-constraintlayout - android constraintLayout如何垂直附加到上面可能不可见的项目
- java - 如何在 Kotlin 计算器应用程序中重置变量
- python-3.x - 标签未显示在 python igraph 中
- java - 在 Post 请求之前将字节数组转换为 C# 字节数组
- c# - C# .NET Core Razor 页面 appsettings 值无法访问
- c# - 正确使用 IHttpMessageHandlerFactory?
- perl - AI::MXNet (Perl API):如何拟合()动物园模型
- spring - 使用 @SQL 测试 ApplicationListener
- php - 在生成类似 LtHash 的总和时,保证字符串的唯一性,而不考虑其字符位置