Я пишу тестовые примеры для проекта, который по-прежнему использует плагин Acegi (а не новый плагин Spring Core Security), и на данный момент мне удалось сделать то, что этот сайт (http://www.zorched.net/2008/09/01/grails-testing-acegi-security/)тестирование securityConfig mapping in grails + acegi
предложил относительно обнаружения которого пользователь в настоящее время вошли в систему, однако, на мой контроллер, у меня есть материал, который выглядит следующим образом:.
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, я должен был быть перенаправлен на страницу «denied».
Помощь? Благодаря!
lolz, был боязлив, что это потребует функциональных тестов. в любом случае, я проверю их, спасибо! это помогает совсем немного :) – callie16