我有这个:
@Secured(['ROLE_USER', 'ROLE_HELPDESK', 'ROLE_ADMIN'])
class MyController {
def edit = {
}
@Secured(['ROLE_ADMIN'])
def uploadForUser = {
params.userId = params.id
forward(controller: 'someController', action: 'someAction', params: params)
}
}
我认为集成测试应该失败:
public void test_uploadForUser_unauthenticated(){
myController.params.id = "testUser"
myController.uploadForUser()
}
然而测试通过了。有没有办法测试用spring security插件注释的控制器?
答案 0 :(得分:9)
这些注释由SpringSecurityFilter
分析,因此如果您没有执行实际的HTTP请求,它们将无效。
因此,您需要切换到通过操作中的条件检查角色,例如完成here,或者使用WebDriver / Geb或一些更简单的框架测试它 - 在{{中提供了非常好的方法3}}