Я пишу тестовые случаи для проекта, который все еще использует плагин Acegi (не более новый плагин Spring Core Security), и на данный момент мне удалось сделать то, что этот сайт (http://www.zorched.net/2008/09/01/grails-testing-acegi-security/)
)
предложил определить, какой пользователь в данный момент вошел в систему. Однако в моем контроллере есть вещи, которые выглядят так:
def list = {
// code for an "admin account"
}
def list_others = {
// code for other accounts
}
Теперь я не проверяю контроллер, вошедший в систему. Вместо этого я определил их в SecurityConfig.groovy как:
security {
...
requestMapString = """\
/someController/list=ROLE_ADMIN
/someController/list_others=ROLE_OTHERS
"""
...
}
Следовательно, если бы у меня был тест, который выглядел так:
void testTrial() {
// define here that otherUser has a role of ROLE_OTHERS
authenticate(otherUser, "other") // this calls the authenticate methode in the site I gave earlier
controller.list()
// I do an assertion here to check where this goes to
}
Дело в том, что, когда я делаю утверждение, конечно, список расскажет мне, что он перенаправлен в list.gsp ... даже если «залогиненный» пользователь имеет роль ROLE_OTHERS, а не администратор.
Однако, что мне нужно, это как проверить, что только авторизованный пользователь должен иметь доступ? В этом случае, учитывая, что вызов * .list () и вошедший в систему пользователь имеет роль ROLE_OTHERS, я должен был быть перенаправлен на «запрещенную» страницу.
Помощь? Спасибо!