我在我的圣杯应用程序中使用 shiro 安全性。Grails 版本:2.2.1 shiro:1.2.0
我在为启用了过滤器的控制器编写 grails 单元测试用例时遇到问题。当测试用例在没有过滤器的情况下运行时,它工作正常,如果它与Filters 一起运行,那么它会因为在控制器中找不到 accessControl() 方法而失败。我不知道如何在运行测试用例时使 Shiro 的 api 可见。我参考了 shiro 单元测试用例链接http://shiro.apache.org/testing.html但我无法获得有关 accessControl() 的任何信息。我已经给出了我的类和测试用例的示例代码
MyController.groovy
def create() {
// getting request parameters and validation
String emailId = params.emailId
def ret = myService.createUser(emailId)
return ret
}
MyControllerFilters.groovy
def filters = {
loginCheck(controller: 'user') {
before = {
//do some business checks
// Access control by convention.
accessControl() // This is a dynamic method injected by ShiroGrailsPlugin to FilterConfig, but this is not visible during the test case.
}
}
MyControllerTests.groovy
@TestFor(MyController)
@Mock(MyControllerFilters)
class MyControllerTests {
@Before
void setup() {
// initializing some variables
}
void testCreateUserWithFilter() {
request.accessAllowed = true
withFilters(action:"create") {
controller.create()
}
assert response.message == "success"
}
}