Nan*_*Nan 2 junit spring spring-security spring-boot spring-webflux
我正在尝试在 Springboot 2.1.8 和 Junit5 下使用 WebTestClient 编写一些测试
它总是返回 < 401 UNAUTHORIZED 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();
}
}
Run Code Online (Sandbox Code Playgroud)
--------------------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);
}
}
Run Code Online (Sandbox Code Playgroud)
对于 webflux,您可以通过排除 ReactiveSecurityAutoConfiguration 类来禁用 SecurityAutoconfiguration,如下所示:
@WebFluxTest(controllers = YourController.class,excludeAutoConfiguration = {ReactiveSecurityAutoConfiguration.class}))
Run Code Online (Sandbox Code Playgroud)
你已经implementation "org.springframework.boot:spring-boot-starter-security在你的 gradle 依赖项中。默认情况下,当在类路径中找到这个依赖项时,Spring boot 会自动在所有端点上启用安全性。
您可以选择通过更新主类来禁用此默认配置:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
Run Code Online (Sandbox Code Playgroud)
这将禁用所有端点的安全性。
如果您想控制要从中删除安全性的端点,您可以使用以下代码和符合您要求的更新来做到这一点:
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) {
http.authorizeExchange().anyExchange().permitAll();
return http.build();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |