首页 > 解决方案 > Keycloak:使用 FluentTestsHelper 进行测试

问题描述

在 Spring Boot 应用程序中使用 Keycloak 变得越来越流行。但是,通常情况下,文档需要更新,并且缺少许多需要记录或更新的功能。这是测试章节的情况。今天,不幸的是,我没有找到任何工作库,这是一个可以实现的示例。甚至由 keycloak 提供的快速启动项目也失败了。

所以问题是今天如何在 spring-boot API 应用程序中测试 Keycloak 身份验证(编写控制器测试)?有没有可用的图书馆?

标签: spring-boottestingkeycloak

解决方案


我使用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());

推荐阅读