У меня есть SecurityConfig:
@EnableWebFluxSecurity
public class SecurityConfig {
@Bean
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http
.authorizeExchange()
.pathMatchers("/ordermodifyservice/status").permitAll()
.anyExchange().authenticated()
.and()
.cors().configurationSource(corsConfigurationSource())
.and()
.oauth2ResourceServer()
.jwt();
return http.build();
}
}
И у моего контроллера покоя есть параметр @AuthenticationPrincipal @RequestHeader Jwt jwt
:
@GetMapping(value = "/api/method", produces = MediaType.APPLICATION_JSON_VALUE)
public Mono<Something> method(@AuthenticationPrincipal
@RequestHeader("Authorization") String jwt) {
// return something
}
Когда я пытаюсь проверить этот код через почтальона, все в порядке, но яНе понимаю, как я могу написать интеграционный тест для этого, я пытаюсь что-то вроде этого:
@Test
public void test() {
webTestClient
.get()
.uri("/ordermodifyservice/api/orderDetails/aggregated/" + DEFAULT_ORDER_ID)
.headers(httpHeaders -> {
httpHeaders.add("Authorization", "Bearer " + someToken);
})
.exchange().is2xxSuccessful();
}
Я получаю ошибку java.lang.IllegalArgumentException: headers cannot be empty
На самом деле код работает даже без @RequestHeader
.Кто-нибудь знает, как я могу легко создать интеграционный тест на контроллере покоя, который нуждается в токене jwt?