Java 我正在使用@PreAuthorize(“hasAnyRole”(“SOME”ROLE&“x27”)),如何使用testNG测试它?
我已经开始使用Java 我正在使用@PreAuthorize(“hasAnyRole”(“SOME”ROLE&“x27”)),如何使用testNG测试它?,java,java-security,Java,Java Security,我已经开始使用@PreAuthorize,我想用testNg来测试它。 我正在使用带有用户上下文(“用户名”)的;但我运行的每个测试都会通过,但授权是在门户中实时完成的。 有人能帮我解决这个问题吗 @Test private void testFunctionWith@PreAuthorize() throws Exception { withUserContext("username"); } public SecurityContext withUserContext(String u
@PreAuthorize
,我想用testNg
来测试它。
我正在使用带有用户上下文(“用户名”)的
;但我运行的每个测试都会通过,但授权是在门户中实时完成的。
有人能帮我解决这个问题吗
@Test
private void testFunctionWith@PreAuthorize() throws Exception {
withUserContext("username");
}
public SecurityContext withUserContext(String username) {
UserDetails principal = asyncCall(username);
Authentication authentication = new UsernamePasswordAuthenticationToken(principal, principal.getPassword(),
principal.getAuthorities());
SecurityContext context = SecurityContextHolder.getContext();
context.setAuthentication(authentication);
return context;
}
@Async
public UserDetails asyncCall(String username) {
return userDetailsService.loadUserByUsername(username);
}
预计会失败的测试正在通过。您应该使用mvcPerform套件和mvcMock McvMock将模拟您的安全过滤器链、过滤器和麦克风上下文,而mvcPerform将执行验证响应(类型、状态、内容等)的http调用
MvcPerform示例:对于一个我不知道的独立应用程序,我可以通过用户上下文来实现吗。MvcContext用于检索所有与mvc相关的bean。看看