无法模拟ReactriveJWTDecoder

时间:2019-09-16 15:25:54

标签: java spring spring-security spring-security-oauth2

鉴于我具有以下ReactiveJwtDecoder的自定义实现:

@Component
public class CustomReactiveJWTDecoder implements ReactiveJwtDecoder

然后我写一个像这样的测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class AzureADConfigTest {
    @Autowired
    private ApplicationContext context;

    private WebTestClient client;

    @MockBean
    AzureADService azureADService;

    @MockBean
    CustomReactiveJWTDecoder decoder;

    @Before
    public void setUp() {
        Jwt jwt = createJwt();
        UsernamePasswordAuthenticationToken user = new UsernamePasswordAuthenticationToken(new User("test@user.se", "", AuthorityUtils.commaSeparatedStringToAuthorityList("A_AD")), "", AuthorityUtils.commaSeparatedStringToAuthorityList("A_AD"));
        when(decoder.decode(anyString())).thenReturn(Mono.just(jwt));
        when(azureADService.getUserInfo(any())).thenReturn(Mono.empty());
        client = WebTestClient.bindToApplicationContext(context).build();
    }

    @Test
    public void azureAdAccessGrated() {

        client
                .get()
                .uri("/api/userinfo")
                .header("Authorization", "Bearer " + "token")
                .exchange()
                .expectStatus()
                .isOk();
    }

}

该模拟不被尊重。如果我在我的原始impl中放置一个断点,那么该代码将被执行而不是模拟。

我的问题是: 我在使用Spring Boot Security Resource Server时如何模拟ReactiveJWTDecoder?有很多建议,但没有一个像创建一个@MockBean那样简单。

0 个答案:

没有答案