我正在尝试使用Springboot2.1.8和Junit5下的WebTestClient编写一些测试
它总是返回< 401 Unauthorized,但实际上它根本没有去控制器或服务层。这可能与spring安全有关,只是我的猜测。
该项目是使用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);
}
}发布于 2020-07-31 22:58:56
对于webflux,可以通过排除ReactiveSecurityAutoConfiguration类来禁用SecurityAutoconfiguration,如下所示:
@WebFluxTest(controllers = YourController.class,excludeAutoConfiguration = {ReactiveSecurityAutoConfiguration.class}))发布于 2019-10-15 20:40:21
当在类路径中找到这个依赖项时,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();
}
}https://stackoverflow.com/questions/58348038
复制相似问题