首页 > 解决方案 > 如何测试安全的端点/休息控制器?Java,带有@Secured

问题描述

我有一个 REST 控制器,它是安全的,需要测试:

@RestController
@RequestMapping("/account")
public class ViewerEditorEndpoint {
    private final ViewerEditorService viewerEditorService;

    public ViewerEditorEndpoint(ViewerEditorService viewerEditorService) {
        this.viewerEditorService = viewerEditorService;
    }

    @PutMapping("/{username}")
    @Secured({"ROLE_VOLUNTEER", "ROLE_INDIVIDUAL", "ROLE_COMPANY"})
    UserDTO editAccountInfo(@PathVariable String username, @RequestBody UserDTO userDTO) {
        Optional<UserDTO> oUser= viewerEditorService.editAccountInfo(username, userDTO);
        return oUser.orElse(null);
    }
    @GetMapping("/{username}")
    //@Secured({"ROLE_VOLUNTEER", "ROLE_INDIVIDUAL", "ROLE_COMPANY"})
    UserDTO getAccountInfo(@PathVariable String username) {
        if (username.equals(principal.getName())) {
            return viewerEditorService.getAccountInfo(username).orElse(null);
        }
        return null;
    }
}

我用@WithMockUser、@WithUserDetails 尝试过,但没有一个真正有效。我看到了很多关于 Mockmvc 的例子,但我真的不明白如何实现它。我会很感激一些小费(:

标签: javaspringspring-mvctestingspring-security

解决方案


推荐阅读