Тестирование защищенных страниц spring безопасности

Я пытаюсь проверить, что моя домашняя страница защищена Spring Security, используя Geb.

Это мой тест:

void "Unauthenticated user is redirected to login page."() {
given:
    to HomePage
    via AuthPage

expect:
    at AuthPage

}

Когда я пытаюсь запустить этот тест, geb говорит, что мое утверждение не выполнено. В нем говорится, что я нахожусь на своей AuthPage, а не на своей домашней странице.

Это трассировка стека:

| Failure:  Unauthenticated user is redirected to login page.(home.HomePageSpec)
|  Assertion failed: 
title ==~ /Home/
|     |
Login false
at pages.home.HomePage._clinit__closure1(HomePage.groovy:8)
at geb.Page.verifyThisPageAtOnly(Page.groovy:165)
at geb.Page.verifyAt(Page.groovy:133)
at geb.Browser.doAt(Browser.groovy:358)
at geb.Browser.at(Browser.groovy:289)
at geb.Browser.to(Browser.groovy:436)
at geb.Browser.to(Browser.groovy:412)
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
at home.HomePageSpec.Unauthenticated user is redirected to login page.(HomePageSpec.groovy:22)

Но это поведение, которое я ожидаю! Почему это не удается?


person Akolopez    schedule 08.05.2014    source источник


Ответы (2)


Вы можете использовать via(), который был введен для ситуаций, связанных с перенаправлениями, который переходит к URL-адресу страницы так же, как to(), но не работает «при проверке». Таким образом, ваш тест будет выглядеть так:

void "Unauthenticated user is redirected to login page."() {
    when: 
    via HomePage

    then:
    at AuthPage
}
person erdi    schedule 09.05.2014

Метод to() geb неявно вызывает статический метод at closure. Вот почему мои тесты провалились. Когда я вызывал HomePage, он проверял, достиг ли я HomePage, чего я никогда не делаю, потому что он перенаправляется. Вместо этого я использовал go <HOME_PAGE_URL>.

person Akolopez    schedule 08.05.2014
comment
Вы можете улучшить свой код, используя via HomePage (переходит на URL-адрес домашней страницы и не выполняет at проверку) и at AuthPage. Таким образом, вам не нужно указывать URL своей страницы в тесте при использовании go(). - person erdi; 09.05.2014
comment
Кажется, это не работает для меня. Я все еще захожу на AuthPage, когда использую HomePage. - person Akolopez; 09.05.2014
comment
Да, потому что вы перенаправлены вашим приложением. - person erdi; 09.05.2014
comment
Это не работает. Он говорит, что я терплю неудачу в утверждении. go - единственное, что работает. - person Akolopez; 13.05.2014