【发布时间】:2012-05-17 11:34:23
【问题描述】:
我正在使用带有 grails 2.0 的 spring 安全核心插件 (1.2.7)
假设我有一个使用@Secured 注解的方法的控制器。
class ArticleController {
def springSecurityService
@Secured(['ROLE_PREMIUM_USER'])
def listPremium() {
render 'premium content'
}
}
在我的单元测试中,我想测试具有角色“ROLE_PREMIUM_USER”的用户是否可以看到 listPremium 方法的内容。我该怎么做?
我知道应该是这样开始的:
@TestFor(ArticleController)
@Mock([SpringSecurityService])
class ArticleControllerTests {
void testListPremium() {
defineBeans {
springSecurityService(SpringSecurityService)
}
//but how to login the user here in order to see premium content?
controller.listPremium()
assert response.text() == 'premium content'
}
}
我不确定如何验证用户或检查 ROLE_PREMIUM_USER 的模拟操作。有什么帮助吗?
【问题讨论】:
-
看看这个插件:spring-security-mock
-
试试 controller.springSecurityServce.ifAnyGranted("ROLE_PREMIUM_USER") 你可能需要从 ControllerUnitTestCase 扩展你的类