2013-05-31 21 views
4

我有一个控制器方法我注释,像这样:在Grails中,我如何在自动化测试中测试@Secured注解?

@Secured(['ROLE_ADMIN']) 
def save() { 
    ... // code ommitted 
} 

我想编写一个单元测试来验证,只有管理员用户可以点击的网址:

def "Only the admin user should be able to invoke save"() { 
    given: 
    def user = createNonAdminUser() // let's pretend this method exists 
    controller.springSecurityService = Mock(SpringSecurityService) 
    controller.springSecurityService.currentUser >> user 

    when: 
    controller.save() 

    then: 
    view ==~ 'accessdenied' 
} 

但是,返回的视图是save视图,而不是拒绝访问视图。看起来它完全绕过了@Secured注释。有没有办法从单元测试或集成测试中测试@Secured注释?

+0

你有没有找到任何解决方案呢? –

回答

0

您需要呼叫控制器保存,如果你不这样做已经在createNonAdminUser()之前登录用户。

SpringSecurityUtils.reauthenticate username, password

可能与this问题。

相关问题