当在REST控制器上使用@Secured
,实作界面时,在@WebMvcTest
中找不到控制器。移除@Secured注解或移除类别上的实作,都会让它在测试中执行。
@Controller
@RequestMapping(path="/failing")
public class FailingTestController implements MyPasswordApi {
@RequestMapping(method = GET, produces = MediaType.APPLICATION_JSON_VALUE, path = "/test")
@Secured("ROLE_USER")
public ResponseEntity<GetEntity> getMethod()
和
@Controller
@RequestMapping(path = "/running")
public class RunningTestController {
@RequestMapping(method = GET, produces = MediaType.APPLICATION_JSON_VALUE, path = "/test")
@Secured("ROLE_USER")
public ResponseEntity<GetEntity> getMethod() {
“RunningTest”将成功(即GET请求的状态为200),而“FailingTest”将以状态404结束。使用注入的RequestMapppingHanderMapping
可以看到,具有继承的控制器未绑定。
实际上,在应用程序中,两个控制器都可以找到。
我的问题是,如何测试实现安全性 * 和 * 接口的控制器。
在github上可以找到一个测试用例:https://github.com/sanddorn/Spring-Boot-Security-Rest-Showcase
2条答案
按热度按时间tp5buhyn1#
真实的的答案只能在github-repo中找到(参见问题)。
使用不同的配置类,如
并且删除对应用类的所有额外注解解决了这个问题。
jaql4c8m2#
您正在使用错误的注解,请将Controller替换为RestController