我正在尝试在Springboot 2.1.8和Junit5下使用WebTestClient编写一些测试
它总是返回<401 UNAUTHORIZED未经授权,但实际上它根本没有进入控制器或服务层。我想这可能与春季安全性有关。
该项目是使用JHipster生成的。这是build.gradle
----------------- UimApiServiceImplTest.java -------------------
...
@ExtendWith(SpringExtension.class)
@WebFluxTest(controllers = UserGuidController.class)
@ContextConfiguration(classes = {UserGuidController.class, UimApiServiceImpl.class})
public class UimApiServiceImplTest {
@Autowired
private WebTestClient webTestClient;
@Test
public void testGetGuidByEmail() {
webTestClient.get()
.uri("/uimapi/getguid/{email}", "someone@xxxxx.com")
.accept(MediaType.APPLICATION_JSON_UTF8)
.exchange()
.expectStatus().isOk();
}
}
-------------------- UserGuidController.java --------------------
...
@RestController
@RequestMapping("/uimapi")
public class UserGuidController {
@Autowired
private UimApiServiceImpl uimApiService;
private static final Logger logger = LoggerFactory.getLogger(UserGuidController.class);
@GetMapping("/getguid/{email}")
public String getUserGuid(@PathVariable String email) {
return uimApiService.getUserGuid(email);
}
}
答案 0 :(得分:2)
对于webflux,您可以通过排除如下所示的ReactiveSecurityAutoConfiguration类来禁用SecurityAutoconfiguration:
@WebFluxTest(controllers = YourController.class,excludeAutoConfiguration = {ReactiveSecurityAutoConfiguration.class}))
答案 1 :(得分:0)
您已经在gradle依赖项中添加了implementation "org.springframework.boot:spring-boot-starter-security
“。当在类路径中找到该依赖项时,默认情况下,Spring Boot会自动在所有端点上启用安全性。
您可以选择通过更新主类来禁用此默认配置:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
这将禁用所有端点上的安全性。
如果您想控制要删除哪些端点的安全性,可以使用下面的代码以及符合您要求的更新来做到这一点:
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) {
http.authorizeExchange().anyExchange().permitAll();
return http.build();
}
}