spring-boot - Keycloak:使用 FluentTestsHelper 进行测试
问题描述
在 Spring Boot 应用程序中使用 Keycloak 变得越来越流行。但是,通常情况下,文档需要更新,并且缺少许多需要记录或更新的功能。这是测试章节的情况。今天,不幸的是,我没有找到任何工作库,这是一个可以实现的示例。甚至由 keycloak 提供的快速启动项目也失败了。
所以问题是今天如何在 spring-boot API 应用程序中测试 Keycloak 身份验证(编写控制器测试)?有没有可用的图书馆?
解决方案
我使用https://github.com/ch4mpy/spring-addons,更具体地说是这个KeycloakAuthRequestPostProcessor
类。
例子:
static KeycloakAuthRequestPostProcessor createAuth(String authServerUserId, String role, String givenName, String familyName, String email) {
return new KeycloakAuthRequestPostProcessor()
.roles("user", role)
.name(email)
.accessToken(accessToken -> {
accessToken.setSubject(authServerUserId);
accessToken.setGivenName(givenName);
accessToken.setFamilyName(familyName);
})
.idToken(idToken -> {
idToken.setSubject(authServerUserId);
idToken.setGivenName(givenName);
idToken.setFamilyName(familyName);
});
}
在您的控制器测试中:
mockMvc.perform(get("/admin")
.with(createAuth(...)))
.andExpect(status().isOk());
推荐阅读
- yocto - 如何使用 Yocto 修改 rootfs 配置文件?
- node.js - SequelizeDatabaseError:列“functionCode”不存在,当它存在时
- javascript - 在 Vue.js 中更改 DIV 网格上的背景颜色而不更改其他人的背景
- dart - 如何在 Dart 构造函数中设置 final/const 属性
- python-3.x - 在哪里放置经过训练的语音模型
- ios - 表格视图动态单元格内的文本视图会产生奇怪的滚动行为
- python - 如何确保 TensorFlow Generator 上采样过程创建完全覆盖随机噪声的种子?
- javascript - Firestore:重复 firestore.set() 导致错误:索引 0 处的元素不应为空字符串
- linux - Linux/Shell 对大文本文件进行切片
- c++ - 我们如何在c中制作函数指针的深层副本