【发布时间】:2016-09-23 03:01:22
【问题描述】:
我用 Mockito 测试我的控制器。 在控制器中测试我的方法:
@RequestMapping("/dispatcher")
public String disp(final HttpServletRequest request) {
if (request.isUserInRole("USER")) {
return "hello";
} else if (request.isUserInRole("ADMIN")) {
return "redirect:listUsers.htm";
}
throw new RuntimeException("This role is not registrated");
}
我的测试方法:
@Test
public void testDispatcher() throws Exception {
User user = userDao.findByLogin("log1");
TestingAuthenticationToken testingAuthenticationToken = new TestingAuthenticationToken(user, AuthorityUtils.createAuthorityList("USER"));
SecurityContextHolder.getContext().setAuthentication(testingAuthenticationToken);
System.out.println(testingAuthenticationToken);
mockMvc.perform(post("/dispatcher")
.principal(testingAuthenticationToken))
.andExpect(status().isOk());
}
错误: org.springframework.security.authentication.TestingAuthenticationToken@bf72b5bd:主体:用户 [id=1,firstName=name1,lastName=surname1,login=log1,email=email1@gmail.com,password=psw1,birthDate=1980-01- 01 00:00:00.0,角色=[id=1,名称=USER]];凭证:[受保护];已认证:假;详细信息:空;未授予任何权限
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为 java.lang.RuntimeException: 此角色未注册
我如何为方法 request.isUserInRole(); 设置角色 或者可能对我的问题有另一种解决方案
【问题讨论】:
标签: java spring testing spring-security mockito