集成测试grails spring安全插件?

Ste*_*all 4 security grails plugins spring 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为应该失败的集成测试:

public void test_uploadForUser_unauthenticated(){
    myController.params.id = "testUser"
    myController.uploadForUser()
}
Run Code Online (Sandbox Code Playgroud)

然而测试通过了.有没有办法测试用spring security插件注释的控制器?

Art*_*wak 9

这些注释由分析SpringSecurityFilter,因此如果您没有执行实际的HTTP请求,它们将不起作用.

因此,您需要切换到通过操作中的条件检查角色,例如在此处完成,或者使用WebDriver/Geb或一些更简单的框架进行测试 - Grails Security Plugin本身提供了非常好的方法.