集成测试grails spring安全插件?

时间:2011-08-08 20:16:18

标签: security spring plugins grails spring-security

我有这个:

@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插件注释的控制器?

1 个答案:

答案 0 :(得分:9)

这些注释由SpringSecurityFilter分析,因此如果您没有执行实际的HTTP请求,它们将无效。

因此,您需要切换到通过操作中的条件检查角色,例如完成here,或者使用WebDriver / Geb或一些更简单的框架测试它 - 在{{中提供了非常好的方法3}}